Ruby on rails - ActiveModel 与数组的关联

Ruby on rails - ActiveModel association with array

我正在构建一个 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

这是一个简单的一对多关系,每个"clienti"有很多"interventis"(iterventi是我应用程序中的一种工作)。

今天我需要将这种关系从一对多转换为多对多,每个 "interventi" 需要多于一个 "clienti",所以我想我必须改变数据库中的 "cliente_id" 列从 int 到 text 并存储一个 "Clienti's ids" 的数组(这是好方法吗?)

我的问题是:如果这是好方法,我怎样才能在模型中保留关联,这样我仍然可以使用类似 "Clienti.Interventi.count" 的东西?

感谢大家!

您需要一个连接模型来进行这种多对多关联。按照惯例,您可以将其称为 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.countInterventi.first.clientis.count