我正在建立一个RoR应用程序 这是我原来的情景:
2个型号,Clienti和Interventi
class Clienti < ActiveRecord::Base
has_many :interventi, :dependent => :destroy, :foreign_key => "cliente_id"
......
end
class Interventi < ActiveRecord::Base
belongs_to :clienti, :foreign_key => "cliente_id"
.........
end
这是一个简单的一对多关系,每个&#34; clienti&#34;有很多&#34; interventis&#34; (iterventi在我的应用程序中是一种工作)。
今天我需要将这种关系从一对多转换为多对多转换,每个关系都是&#34;介入&#34;需要有一个以上的&#34; clienti&#34;,所以我想我必须改变&#34; cliente_id&#34; DB中的列从int到text并存储一个&#34; Clienti的id&#34; (这是好方法吗?)
我的问题是:如果它是好方法,我怎样才能保持模型中的关联,所以我仍然可以使用像#34; Clienti.Interventi.count&#34; ?
感谢所有人!
答案 0 :(得分:1)
您需要一个连接模型来执行此类多对多关联。按照惯例,您可以将其称为!(a == b)
clienti_interventi
通过此设置,您可以继续做您正在做的事情,以及class Clienti
has_many :clienti_interventis
has_many :interventis, through: :clienti_interventis
end
class Interventi
has_many :clienti_interventis
has_many :clientis, through: :clienti_interventis
end
class ClientiInterventi
belongs_to :clienti
belongs_to :interventi
end
或Clienti.first.interventis.count