我有2个模型
class User < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :user
end
我是否需要在Product表中添加一个user_id列,还是Rails默认会添加它?
我有2个模型
class User < ActiveRecord::Base
has_many :products
end
class Product < ActiveRecord::Base
belongs_to :user
end
我是否需要在Product表中添加一个user_id列,还是Rails默认会添加它?
您需要手动将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