0

我有属于账户的积分,但在账户之间来回交易。我需要能够跟踪信用当前属于哪个帐户,以及最初创建信用的帐户。目前我有一个这样的协会:

    class Credit < ActiveRecord::Base
      belongs_to :original_owner, :foreign_key => "account_id", :class_name => "Account"
      belongs_to :account, :class_name => Account
    end

现在在 Rails 控制台中,我可以设置 Credit.account.id = 3 和 Credit.original_owner.id = 4,但这只是更改了“帐户 ID”,实际上并没有更改关联。如果我将 Credit.account = Account.find(3) 设置为有效,但我无法将 Credit.original_owner 设置为 Account.find(4)。它表明它保存正确,但它没有。它只随 Credit.account 改变。每次我更改帐户时,它都会更改 original_owner 。

如何设置我的关联,以便我的 Credits 属于一个帐户,但仍跟踪其原始帐户?

4

2 回答 2

1

您不能将关联的外键设置为original_owneraccount_id因为这是关联的外键account。您需要为每个关联提供一个明确命名的外键。(即original_owner_id

@credit.account.id = 3也不@credit.original_owner.id = 4正确。您正在尝试更改id关联对象的 。我假设您正在尝试修改关联,这是通过@credit.account_id = 3(使用外键)完成的,或者,正如您所指出的,@credit.account = Account.find(3)如果您想使用对象也可以。

于 2013-09-30T16:11:45.143 回答
0

您需要向模型添加一个新列并映射foreign_key到该列。

于 2013-09-30T16:03:51.433 回答