Rails 4个协会:帮助建立数据库

Rails 4 Associations: Help setting up database

我的 Rails 4 个关联需要一些帮助。我有以下 4 个型号:

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

问题:如果我这样设置,我如何分别输入repositioningsweigh_ins,但仍然通过一次检查将它们链接起来在?

是否要让用户在不同页面上输入 weigh_ins 和重新定位?
单独输入 weigh_ins 和重新定位但仍然是单个签入的一部分对于该设置来说很好。
只需获取相同的 check_in 对象并与该对象建立关联,这可以通过控制器传入 check_in ID 参数并执行 CheckIn.find(params[:id])

您必须保留其他协会的 ID 之一才能使其正常工作。

例如,假设:

  1. 您已创建签到。
  2. 您现在为该签到添加重新定位。
  3. 存储重新定位对象的ID
  4. 添加 WeighIn 对象时,您只需引用正确的 CheckIn 记录:correct_checkin_record = CheckIn.where(repositioning: the_repositioning_id)
  5. 然后您可以将 WeighIn 对象添加到该特定记录。

另一种(更简单的)方法是直接通过用户访问 CheckIn:correct_checkin_record = @user.checkin -- 这将每次都引入正确的 CheckIn。

我已经包括了这两个选项,以帮助准确地形象化关系中发生的事情。