Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails属于概念性辩论_Ruby On Rails_Ruby_Belongs To_Has One - Fatal编程技术网

Ruby on rails Rails属于概念性辩论

Ruby on rails Rails属于概念性辩论,ruby-on-rails,ruby,belongs-to,has-one,Ruby On Rails,Ruby,Belongs To,Has One,我正在构建一个应用程序,在这个应用程序中,我有分层模块,请容忍荒谬的模型,但这个概念与动物有一个跟踪器是一样的,跟踪器有一个手机,每个手机都有自己的序列号。。。动物id:10,追踪者序列号:12,手机imei:123456789123456 定义关系的可接受方式是什么 我现在使用的是这个方案: Animal has_one Tracker, Tracker has_one Cellphone Cellphone belongs_to Cellphoneable, Tracker belongs

我正在构建一个应用程序,在这个应用程序中,我有分层模块,请容忍荒谬的模型,但这个概念与动物有一个跟踪器是一样的,跟踪器有一个手机,每个手机都有自己的序列号。。。动物id:10,追踪者序列号:12,手机imei:123456789123456

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

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

Animal has_one Tracker, Tracker has_one Cellphone

Cellphone belongs_to Cellphoneable, Tracker belongs_to Trackable
这些是多态关系


我很难理解的是,我将手机号码存储在手机表中,但我开始认为,这种关系应该存在于跟踪表中,而不要使用手机,让上层联系起来。

如果:

追踪器属于一种动物和一部手机 如果一只动物只能有一个跟踪器 如果一部手机可以连接到多个跟踪器,因此可以连接到多个动物 代码如下:

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

但是按照它们的构造方式,一个追踪器只有一个手机,一个动物只有一个追踪器,这里没有冗余……然后我会删除手机模型,只将手机信息作为列添加到追踪器表中。动物们有自己的桌子,但变化有很多:跟踪器有一个:跟踪器我不喜欢这样,因为短信特定的方法只对手机有用。。。我会在模型之间混合功能…我已经编辑了我的答案。你有两个原子模型,它们可以毫无关联地存在:动物和手机。追踪器只有在与动物和手机绑定的情况下才能存在。我只是想正确地理解你:手机实际上是从Cellphoneable继承的,追踪器是从Trackable继承的,对吗?在rails中,这不是一个属于关系,而是STI单表继承。不,这不是继承,它们实际上是不同的模型