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
问题:如果我这样设置,我如何分别输入repositionings
和weigh_ins
,但仍然通过一次检查将它们链接起来在?
是否要让用户在不同页面上输入 weigh_ins 和重新定位?
单独输入 weigh_ins 和重新定位但仍然是单个签入的一部分对于该设置来说很好。
只需获取相同的 check_in 对象并与该对象建立关联,这可以通过控制器传入 check_in ID 参数并执行 CheckIn.find(params[:id])
您必须保留其他协会的 ID 之一才能使其正常工作。
例如,假设:
- 您已创建签到。
- 您现在为该签到添加重新定位。
- 存储重新定位对象的ID
- 添加 WeighIn 对象时,您只需引用正确的 CheckIn 记录:
correct_checkin_record = CheckIn.where(repositioning: the_repositioning_id)
- 然后您可以将 WeighIn 对象添加到该特定记录。
另一种(更简单的)方法是直接通过用户访问 CheckIn:correct_checkin_record = @user.checkin
-- 这将每次都引入正确的 CheckIn。
我已经包括了这两个选项,以帮助准确地形象化关系中发生的事情。
我的 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
问题:如果我这样设置,我如何分别输入repositionings
和weigh_ins
,但仍然通过一次检查将它们链接起来在?
是否要让用户在不同页面上输入 weigh_ins 和重新定位?
单独输入 weigh_ins 和重新定位但仍然是单个签入的一部分对于该设置来说很好。
只需获取相同的 check_in 对象并与该对象建立关联,这可以通过控制器传入 check_in ID 参数并执行 CheckIn.find(params[:id])
您必须保留其他协会的 ID 之一才能使其正常工作。
例如,假设:
- 您已创建签到。
- 您现在为该签到添加重新定位。
- 存储重新定位对象的ID
- 添加 WeighIn 对象时,您只需引用正确的 CheckIn 记录:
correct_checkin_record = CheckIn.where(repositioning: the_repositioning_id)
- 然后您可以将 WeighIn 对象添加到该特定记录。
另一种(更简单的)方法是直接通过用户访问 CheckIn:correct_checkin_record = @user.checkin
-- 这将每次都引入正确的 CheckIn。
我已经包括了这两个选项,以帮助准确地形象化关系中发生的事情。