Rails模型之间的关系:has_many和belongs_to

24

我有2个模型

 class User < ActiveRecord::Base
   has_many :products
 end

class Product < ActiveRecord::Base
  belongs_to :user
end

我是否需要在Product表中添加一个user_id列,还是Rails默认会添加它?

1个回答

53

您需要手动将user_id列添加到Product模型中。如果您尚未创建模型,请在列列表中添加对模型生成器的引用。例如:

rails generate model Product name:string price:decimal user:references

或者,如果您的Product模型已经存在,您需要执行以下操作:

rails g migration addUserIdToProducts user_id:integer

这将生成一个迁移,正确地将user_id列添加到products表中。由于列名被正确命名为(user_id),Rails就会知道这是您的外键。


嘿,我正在使用 postgresql,并且我使用你提到的第一种方法进行了模型创建。使用 user:references。现在,当我尝试删除 user 模型对象时,它会给出 PG::ForeignKeyViolation: 错误。我的期望是,当我删除用户时,所有属于该用户的 products 都应该被删除。PS:在我的 Product 模型中,我有 belongs_to :user, dependent: :destroy。我是 Rails 的初学者 :) - rahulrvp

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接