我的模型看起来像这样:
class User < ActiveRecord::Base
attr_accessible: :name
has_many :reviews
end
class Product < ActiveRecord::Base
attr_accessible: :name
has_many :reviews
end
class Review < ActiveRecord::Base
attr_accessible: :comment
belongs_to :user
belongs_to :product
validates :user_id, :presence => true
validates :product_id, :presence => true
end
鉴于 :user_id 和 :product_id 不可 attr_accessible,我试图找出创建新评论的最佳方法。通常,我只是通过关联 ( @user.reviews.create ) 创建评论来自动设置 :user_id,但在这种情况下,我不确定如何设置 Product_id。
我的理解是,如果我执行 @user.reviews.create(params),所有非 attr_accessible 参数将被忽略。
最佳答案
你可以这样做:
@user.reviews.create(params[:new_review])
...或类似的。您还可以使用嵌套属性:
class User < ActiveRecord::Base
has_many :reviews
accepts_nested_attributes_for :reviews
...
请参阅 http://api.rubyonrails.org/classes/ActionView/Helpers/FormHelper.html 上的“嵌套属性示例” .
关于ruby-on-rails - ruby-on-rails 创建具有多个belongs_to和attr_accessible的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8936847/