Rails has_one / belongs_to概念辩论

时间:2011-10-30 18:03:22

标签: ruby-on-rails ruby belongs-to has-one

我正在构建一个应用程序,我有分层模块,(与我一起使用荒谬的模型,但概念是相同的),因为在动物有一个跟踪器,跟踪器有一个手机,每个都有自己的serial_number ...(Animal animal_id:10,Tracker serial_number:12,手机imei:123456789123456)

定义关系的可接受方式是什么?

我现在使用的是这个方案:

Animal has_one Tracker, Tracker has_one Cellphone

Cellphone belongs_to Cellphoneable, Tracker belongs_to Trackable

(这些是多态关系)

我无法理解的是我将mobileable_id存储在Cellphones表中,但我开始认为这种关系应该存在于Tracker表中,并让手机保持独立并让上层关注下来

如果你们能帮我辩论一下,我会非常感激......

1 个答案:

答案 0 :(得分:0)

如果出现以下情况,我会这样做:

  1. 跟踪器属于单个动物和单个手机
  2. 如果动物只能有一个跟踪器
  3. 如果手机可以连接多个跟踪器,因此可以连接多个动物
  4. 以下是代码:

    class Tracker < ActiveRecord::Base
      belongs_to :animal
      belongs_to :cellphone
    end
    
    class Animal < ActiveRecord::Base
      has_one  :tracker
      has_one  :cellphone, :through => :tracker
    end
    
    class Cellphone < ActiveRecord::Base
      has_many :trackers
      has_many :animals, :through => :trackers
    end