我有以下问题:
我有两个模型,连接到外部数据库(Mysql)
外部数据库中两个表的正确名称是:
f_aziende
和f_partecipanti
(意大利语)。
在我的Rails应用程序中,我创建了两个连接到这些表的模型,我称之为:
formation_db
和reference_db
。
我的模型代码在这里:
class ReferenceDb < ActiveRecord::Base
establish_connection "#{Rails.env}_db2"
self.table_name = "f_partecipanti"
self.primary_key = 'id'
belongs_to :formation_db
end
class FormationDb < ActiveRecord::Base
establish_connection "#{Rails.env}_db2"
self.table_name = "f_aziende"
self.primary_key = 'id'
has_many :reference_dbs , :foreign_key => "id_azienda"
end
问题是我无法更新与formation_db
关联的所有行。此外,我不确定这两个模型的关联是否正确。我的意思是,在这种情况下,轨道词的召唤是什么?
在我的其他项目中,我经常写道:
@company.update_attributes(params[:company])
我在一行代码中更新了与公司相关的所有内容。 在我的情况下,如何创建类似于此的东西?
答案 0 :(得分:0)
你走得很危险,接近多租户&#34;这就是你认为遇到困难的原因。
无论如何,I found there's a way连接到其他数据库而不必在每个模型中重新声明它:
#app/vendor/db.rb
class Db < ActiveRecord::Base
establish_connection "#{Rails.env}_db2"
end
#app/models/reference_db.rb
class ReferenceDb < Db
self.table_name = "f_partecipanti"
belongs_to :formation_db
end
#app/models/formation_db.rb
class FormationDb < Db
self.table_name = "f_aziende"
has_many :reference_dbs , :foreign_key => "id_azienda"
end
这至少可以简洁地设置你的模型。
-
这些模型可以像Rails中的任何其他模型一样工作。唯一需要注意的是,你不能加入不同的数据库; IE,你不能拥有上述数据库的has_many :through
。
@company = Company.find params[:id]
@company.update_all ....