2011-03-21 60 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不再适用。

相关问题