2011-03-21 55 views
2

例如,我有一個賬戶對象。我將該帳戶對象存儲在名爲帳戶服務的外部服務中。但我希望將存儲在外部服務中的帳戶與本地應用程序首選項相關聯。使用關聯創建Rails模型的最佳方式是什麼,但是主對象沒有數據庫表?

更具體地說,假設該關聯是付款方式。帳戶可以有多種付款方式。我不希望存儲在外部服務中的付款方式,而是消費應用程序。因此,我將創建一個名爲account_payment_methods的表,該表將具有映射到外部服務帳戶的帳戶ID和映射到本地payment_method表的付款方式ID。

我有一個AccountPaymentMethod模型,我可以使用,但它會很高興能夠做account.payment_methods << PaymentMethod.first或類似的東西。

是否有一種開箱即用的方法,或者我會自己編寫此功能?

+0

您是否找到任何解決方案? – vishram0709 2017-03-27 16:21:28

回答

0

我想這取決於你想要加入數據的位置。

如果信息將生活在賬戶服務:

我不認爲你可以對非的ActiveRecord :: Base的子類類協會,短距離的ActiveRecord內部黑客攻擊他們(通過使你自己的HasManyAssociation的子類,它讀取你存儲的屬性。)所以你可能會有點失落。

如果你想住在你的正常分貝信息:

我可能會使用的帳戶映射到相應的表的AccountBridge模型,並把協會的存在;還將帳戶的方法代理到帳戶對象。然後我會有名義上have_{one,many} :account(s)祕密代理到AccountBridge的對象,並擁有關係的實際外鍵。

1

瑞安貝茨在前段時間在這個screen-cast報道。我很確定這會適用於您的情況。確保在指定關聯時設置正確的主鍵/外鍵屬性。

1

在Rails 3.2+中,您可能想要看看this gem。 Table-less模型RailsCast不再適用。

相關問題