首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4关联:帮助建立数据库

Rails 4关联:帮助建立数据库
EN

Stack Overflow用户
提问于 2016-05-02 13:55:03
回答 2查看 23关注 0票数 0

我需要一些帮助,我的Rails 4协会。我有以下4种型号:

代码语言:javascript
复制
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,但仍然通过一次签入将它们链接起来?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-05-02 14:07:41

为了使其工作,您必须保留另一个协会的ID。

例如,假设:

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

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

我包括了两个选项,以帮助形象化在关系中到底发生了什么。

票数 1
EN

Stack Overflow用户

发布于 2016-05-02 14:07:33

您想让用户在不同的页面上输入weigh_ins和职位吗?

将weigh_ins和repositionings分开输入,但仍然是单个签入的一部分,这样的设置是可以的。

这只是获取同一个check_in对象并使关联与该对象相关联的问题,这可以通过通过传入check_in ID参数和执行CheckIn.find(params[:id])来完成。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36984199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档