【问题标题】:RoR: a has_one and has_many reference in same model?RoR:同一模型中的 has_one 和 has_many 参考?
【发布时间】:2012-12-09 07:32:37
【问题描述】:

假设我有一个名为 Device 的模型,以及另一个名为 Firmware 的模型(其中包含固件版本号和其他信息)。我想跟踪设备上安装的固件版本的历史记录,以及对当前版本的引用(这可能是也可能不是最新的日期)。

如何设置我的关联,以便我可以指向一种特定的固件配置(当前的)和几种不同的固件配置(历史)?

【问题讨论】:

    标签: ruby-on-rails associations has-many-through


    【解决方案1】:

    device_current_id整数列添加到固件表中,然后:

    class Device < ActiveRecord::Base
      ...
      has_one :current_firmware, class_name: "Firmware", foreign_key: "device_current_id"
      has_many :firmwares
    end
    

    【讨论】:

      【解决方案2】:

      在您的关联中使用:class_name,例如...

      设备型号

      has_one :current_firmware, class_name :firmware
      has_many :old_firmwares, class_name :firmware
      

      【讨论】:

      • 您还需要在固件表中添加一个外键。
      • 不确定这是否是 meagar 的意思,但这是不正确的。 current_firmware 只会返回具有给定 device_id 的第一个固件,没有特定的顺序。另外据我所知,您不能对 class_name 键的值使用符号。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-03-11
      • 1970-01-01
      相关资源
      最近更新 更多