ruby-on-rails - Rails 模型属性(property)位置

标签 ruby-on-rails activerecord

我正在使用 Ruby on Rails tutorial并刚刚制作了一个具有三个属性的 Comment 模型。

rails generate model Comment commenter:string body:text post:references

它生成了一个包含 post 的 ActiveRecord 类,但不包含 commenterbody

class Comment < ActiveRecord::Base
  belongs_to :post
end

为什么 Rails 不在数据库迁移脚本之外的任何地方正式定义非引用属性?

最佳答案

Rails 根据数据库模式动态加载属性,特别是列的名称及其类型。无需在模型中定义或声明它们。对于在生产环境中运行的应用程序,它会在加载时执行一次此操作。对于开发来说,它将根据每个请求重新加载它们,但仅在使用每个模型时加载它们。

不过,Rails 不会从数据库中推断出其他内容。例如,如果您要在 name 列上放置唯一索引,它不会自动将 validates_uniqueness_of :name 添加到您的模型中。当然,当您保存记录时,数据库仍然会强制执行此约束,如果名称字段包含重复值,则会引发异常。在这种情况下,建议两者都做。

关于ruby-on-rails - Rails 模型属性(property)位置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4982254/

相关文章:

ruby-on-rails - 减去两个 ActiveRecord::Relation 对象

ruby-on-rails - Rails 3 - HABTM 未使用 << 更新连接表

java - 启动 Rails 服务器时出现参数转储格式错误

mysql - 如果 schema.rb 不存在,为什么 Cucumber 会删除表?

ruby-on-rails - Rails 如何设置不是数据库字段的临时变量

ruby-on-rails - 乘客并发连接错误

ruby-on-rails - 为什么ActiveRecord has_many使用delete_all而不是destroy_all?

ruby-on-rails - 如何在Ruby On Rails上模拟stackoverflow中的效果?

ruby-on-rails - ActiveRecord 查找以

ruby - 在迁移中从 lambda 指定默认值