2

これは非常に単純な質問だと思いますが、私は User、Product、および Review モデルを持つアプリを持っています。

ユーザーが製品の新しいレビューを作成するとき、私は現在、レビューの作成アクションにこれを持っています:

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

これは正常に機能しますが、レビューは製品のみに関連付けられており、作成ユーザーにも関連付けたいと考えています。ただし、次のようなことをすると:

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

別個の記録であるレビューの 2 つのインスタンスを作成しますか? @review 変数を 1 つだけ使用して、このような複数の関連付けを行うにはどうすればよいですか?

私が理解しているように、@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 に答える