2

我认为这是一个非常简单的问题,但我有一个包含用户、产品和评论模型的应用程序。

当用户为产品创建新评论时,我目前在我的评论创建操作中有这个:

@review = @product.reviews.new(params[:review])

这很好用,但评论仅与产品相关联,我还想将其与创建用户相关联。但是,如果我这样做:

@review = @product.reviews.new(params[:review])
@review = current_user.reviews.new(params[:review])

它会创建两个单独记录的评论实例吗?我怎么能用一个 @review 变量来做这样的多个关联呢?

请注意,我没有使用多态关联,因为据我了解,我不需要允许 @review 属于产品或用户,因为我总是想将它与两者关联。

因此,在我的 Review 模型中,我有:

t.integer  :product_id
t.integer  :user_id

我的模型看起来像这样:

产品:

has_many :reviews

用户:

has_many :reviews

审查:

belongs_to :user
belongs_to :product

首先,这个设置是否正确?我不使用多态关联是对的吗?如果是这样,我怎样才能编写我的控制器代码来做我想做的事?

4

1 回答 1

2

请参阅Rails 协会

你可能想要这样的东西:

@review = @product.reviews.new(params[:review])
current_user.reviews << @review
于 2013-05-25T01:12:33.307 回答