2017-11-07 7 views
0

私はクイズアプリで作業していますが、そのクイズのスコアに登場したクイズと共にユーザーを追跡しなければならないので、結合テーブル(has_and_belongs_to_manyすべてのヘルプは高く評価されますスコアデータをquiz_userジョインテーブルに挿入する

quiz_id、USER_IDを持つことになりますし、スコアはそれについて移動するための最良の方法かもしれないが、私はテーブルにスコアを挿入することはできないのです関係)quizzes_user ..

+0

ジョイントテーブルでは、スコアを保存することができないため、モデルのスコアを別のテーブルスコアにする必要があります。スコアスコアはユーザーに属し、クイズに属し、すべてのスコア –

答えて

1

has_and_belongs_to_manyhas_many through:を使用しないでください。

class User < ApplicationRecord 
    has_many :results 
    has_many :quizzes, through: :results 
end 

class Result < ApplicationRecord 
    belongs_to :user 
    belongs_to :quiz 
end 

class Quiz < ApplicationRecord 
    has_many :results 
    has_many :users, through: :results 
end 

has_and_belongs_to_many協会が参加するエンティティのためのモデルを持っていないので、それを直接照会したり、結合テーブルに列を追加するまっすぐ進む方法はありません。

ここでは、のようなもので、「結果/スコア」を作成します。あなたはinstanciatingないから、それらの機能とメモリを節約する必要は決してないだろうことを知っていれば

@quiz.results.create(user: current_user, score: 99) 

has_and_belongs_to_manyだけで、実際には良いアイデアですモデルに参加する。これは、結合エンティティがそれ自体の実際の「もの」でない場合にのみ当てはまります。