0

私はRails 4の関連付けについて助けが必要です。私は、次の4つの機種があります。Rails 4 Associations:データベース設定の手助け

class User < ActiveRecord::Base 
    has_many :check_ins 
    has_many :weigh_ins, :through => :check_ins 
    has_many :repositionings, :through => :check_ins 
end 

class CheckIn < ActiveRecord::Base 
    belongs_to :user 
    has_one :weigh_in 
    has_one :repositioning 
end 

class Repositioning < ActiveRecord::Base 
    # belongs_to :user 
    belongs_to :check_in 
end 

class WeighIn < ActiveRecord::Base 
    # belongs_to :user 
    belongs_to :check_in 
end 

質問:私はこのよう設定していた場合は、どのように私は入力repositionings、別途weigh_insが、それでも彼らは、単一のチェックを介して連結されているのでしょうか?

答えて

1

他のアソシエーションのIDの1つを保持する必要がありますそれを機能させるために

たとえば、のは言わせて:あなたは、チェックインを作成している

  1. あなたは今ではそのチェックに再配置を追加
  2. ストアの再配置オブジェクトのID
  3. あなたWeighInオブジェクトを追加するとき、あなたは、単に正しいチェックインレコードを参照します:correct_checkin_record = CheckIn.where(repositioning: the_repositioning_id)
  4. あなたはその後、追加することができますその特定のレコードに対するオブジェクトの重み付け。

ユーザーが直接CheckInにアクセスする方法があります。correct_checkin_record = @user.checkin - 毎回正しいCheckInが取得されます。

私は両方のオプションを含めて、関係で起こっていることを正確に視覚化するのに役立ちました。

0

ユーザーが異なるページにweigh_insとrepositioningを入力させますか?
weigh_insとrepositioningsを別々に入力しても、1回のチェックインの一部であっても、その設定で問題ありません。
同じcheck_inオブジェクトを取得してそのオブジェクトとの関連付けを行うのは、check_in IDパラメータを渡してコントローラから行うことができます。CheckIn.find(params[:id])

関連する問題