gpt4 book ai didi

ruby-on-rails-3 - ActiveRecord + postgresql + 数据约束

转载 作者:行者123 更新时间:2023-11-29 11:35:36 26 4
gpt4 key购买 nike

我想在我的 Rails 应用程序中使用 ActiveRecord,但我想在 PostgreSQL 数据库而不是 ActiveRecord 模型中编码数据约束。

例如,如果我有一个由脚手架生成的模型,

 rails generate scaffold User name:string email:string yearofbirth:integer

我想确保名称足够长。例如

 class User < ActiveRecord::Base
validates :name, :length => { :maximum => 140 }
validates_uniqueness_of :name
validates_numericality_of :yearofbirth, :greater_than_or_equal_to => 1900
end

这些验证很好,因为如果有人试图添加错误数据,ActiveRecord 会向 View 抛出一些不错的错误消息。

但是,我想在数据库本身中对规则进行编码,并让数据库向 ActiveRecord 抛出同样美观且信息丰富的错误消息,然后 ActiveRecord 会将它们传递给 View 层。例如,

 create table "Users" (
id integer unique,
name varchar(140) unique check(length(name)<140),
email varchar(255),
yearofbirth integer check (yearofbirth >= 1900)
);

我需要在 PostgreSQL 或 ActiveRecord 中做什么才能做到这一点?当我尝试使用 pgAdmin III 工具时,它抛出了错误消息,但我想自定义它们。

另外,有没有办法将这些数据库规则直接编码到 Ruby 中的数据库迁移文件中?

我很感激你能给我的任何帮助。

最佳答案

上面的CREATE TABLE语句唯一的错误是USER是保留字,必须加引号。因此,

CREATE TABLE "User" ( ... );

会起作用。 (选择您想要的名称的大写。)

关于ruby-on-rails-3 - ActiveRecord + postgresql + 数据约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786307/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com