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.count
或 Interventi.first.clientis.count
我正在构建一个 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.count
或 Interventi.first.clientis.count