0

我正在构建一个应用程序,其中我有分层模块,(请忍受荒谬的模型,但概念是相同的),因为动物有一个追踪器,而追踪器有一个手机,每个都有自己的序列号...... (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

(这些是多态关系)

我无法理解的是我将 cellphoneable_id 存储在 Cellphones 表中,但我开始认为该关系应该驻留在 Tracker 表中,并且不理会 Cellphone 并让上层相关联。

4

1 回答 1

0

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

  1. 跟踪器属于单个动物和单个手机
  2. 如果一只动物只能有一个追踪器
  3. 如果一部手机可以连接到多个追踪器,因此可以连接到多个动物

这是代码:

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
于 2011-10-30T18:16:30.017 回答