2015-09-25 51 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) - 可能你可以建議..非常感謝! –