Ruby on rails Rails属于概念性辩论
我正在构建一个应用程序,在这个应用程序中,我有分层模块,请容忍荒谬的模型,但这个概念与动物有一个跟踪器是一样的,跟踪器有一个手机,每个手机都有自己的序列号。。。动物id:10,追踪者序列号:12,手机imei:123456789123456 定义关系的可接受方式是什么 我现在使用的是这个方案: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
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单表继承。不,这不是继承,它们实际上是不同的模型