2015-09-25 54 views
1

我有以下问题:Rails中的外部数据库关联。更新数据

我有两个型号,连接到外部数据库(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的所有行。另外,我不确定两个模型的关联是否正确。我的意思是,在这种情况下,铁轨词汇的传统是什么?

在我的其他项目中,我通常会写:

​​

和我更新所有在一行代码涉及到公司的事情。 我如何在我的情况下创建类似于此的东西?

+0

你能粘贴错误吗? –

+0

这不是一个错误。这是我没有想法如何编程的东西 – Vito

回答

0

你走得很危险,接近“多租户”的路线,这就是为什么你会遇到困难,我想。

反正I found there's a way连接到其他数据块,而无需redclare它在每一个模型:

#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 .... 
+1

嘿理查德,我实际上挣扎与te连接两个模型,使用不同的数据库'has_many通过'。 [请看看](http://stackoverflow.com/questions/36151369/migration-using-external-database) - 可能你可以建议..非常感谢! –