Ruby on rails - 与数组的ActiveModel关联

时间:2016-06-13 22:14:40

标签: ruby-on-rails arrays activerecord activemodel

我正在建立一个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; ?

感谢所有人!

1 个答案:

答案 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