模型关联:放置foreign_key的位置

时间:2014-01-30 00:11:12

标签: ruby-on-rails-3.2 model-associations

我正在开发一个控制用户设备借贷的项目。

它显示了一个借阅视图,用于呈现一个表单,用户可以通过选择框选择他/她想要的设备。如果设备在选择框中不可用,则用户必须注册设备然后它将出现在在借出视图的表格中选择框。

模特协会:

贷款has_many设备

设备belongs_to Lending

怀疑是: 如果设备属于贷款,那么我必须将lending_id放在设备中。

但是如果用户访问新设备视图并尝试注册新设备,它将会 错过了lending_id。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

我的猜测是你真正想要的是将用户映射到设备的多对多映射。

class User < ActiveRecord::Base
    has_many :lendings
    has_many :equipments, :through => :lendings

    # etc
end

class Equipment < ActiveRecord::Base
    has_many :lendings
    has_many :users, :through => :lendings

    # etc
end

class Lending < ActiveRecord::Base
    belongs_to :user
    belongs_to :equipment

    # etc
end

您可以编写方法,通过最新的有效贷款为设备提供“当前”用户,反之亦然,此外您还拥有设备项目所有贷款的便捷历史记录。

相关问题