Rails 中的外部数据库关联。更新数据
External database association in Rails . Update data
我有以下问题:
我有两个模型,连接到外部数据库 (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
关联的所有行。另外,我不确定这两个模型的关联是否正确。我的意思是,在这种情况下,rails 单词的约定是什么?
在我的其他项目中,我通常写:
@company.update_attributes(params[:company])
我用一行代码更新了所有与公司相关的东西。
在我的案例中如何创建类似的东西?
你正在危险地接近 "multi tenancy" 线,我认为这就是你 运行 陷入困境的原因。
无论如何,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 ....
我有以下问题:
我有两个模型,连接到外部数据库 (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
关联的所有行。另外,我不确定这两个模型的关联是否正确。我的意思是,在这种情况下,rails 单词的约定是什么?
在我的其他项目中,我通常写:
@company.update_attributes(params[:company])
我用一行代码更新了所有与公司相关的东西。 在我的案例中如何创建类似的东西?
你正在危险地接近 "multi tenancy" 线,我认为这就是你 运行 陷入困境的原因。
无论如何,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 ....