Rails中的外部数据库关联。更新数据

时间:2015-09-25 10:09:07

标签: mysql ruby-on-rails database ruby-on-rails-3.2

我有以下问题:

我有两个模型,连接到外部数据库(Mysql) 外部数据库中两个表的正确名称是: f_aziendef_partecipanti(意大利语)。 在我的Rails应用程序中,我创建了两个连接到这些表的模型,我称之为:

formation_dbreference_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])

我在一行代码中更新了与公司相关的所有内容。 在我的情况下,如何创建类似于此的东西?

1 个答案:

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