让我们考虑一个实际的例子:一个有很多评论的产品,由客户撰写。我们通过评论在产品和客户之间建立了多对多的关系。
class Product < ActiveRecord::Base
has_many :reviews
has_many :clients, :through => :reviews
end
class Client < ActiveRecord::Base
has_many :reviews
has_many :products, :through => :reviews
end
class Reviews < ActiveRecord::Base
belongs_to :product
belongs_to :client
end
在这里,我使用has_many :through
来创建多对多关系,因为评论表需要有额外的属性,比如分数,内容,喜欢,...
用户登录我的应用程序,因此我可以通过以下方式获取他的数据:
client = Client.find_by_id current_user.id
他去产品页面,所以我可以得到产品数据:
product = Product.find_by_id params[:id]
如何创建产品的客户评论?
我试过了:
review = Review.create :client => client, :product => product, :comment => params[:review][:comment]
但它给了我:MassAssignSecurity:无法批量分配受保护的属性:产品、客户
任何想法?提前致谢。