【问题标题】:multiple belongs_to relationships between two classes in RailsRails中两个类之间的多个belongs_to关系
【发布时间】:2011-09-14 02:29:01
【问题描述】:

我有一个事务类。该类的每个对象包括一个发行账户、一个发送账户和一个接收账户。其中每一个都是 Account 类的实例。在我的 Transaction 表中,我有 issuer_id、sender_id 和 receiver_id。

我应该如何指定 Transaction 和 Account 之间的关系以便我可以调用

transaction.issuer
transaction.sender
transaction.receiver

谢谢。

【问题讨论】:

    标签: ruby-on-rails activerecord active-relation


    【解决方案1】:

    使用:class_name指定类名,当从关联名猜不出来时:

    class Transaction
      belongs_to :issuer,   :class_name => 'Account'
      belongs_to :sender,   :class_name => 'Account'
      belongs_to :receiver, :class_name => 'Account'
    end
    
    class Account
      has_many :issued_transactions,   :foreign_key => :issuer,   :class_name => 'Transaction'
      has_many :sent_transactions,     :foreign_key => :sender,   :class_name => 'Transaction'
      has_many :received_transactions, :foreign_key => :receiver, :class_name => 'Transaction'
    end
    

    您可以在documentation阅读更多内容。

    【讨论】:

    • 非常感谢。我对如何在 Account 类和 Transaction 类中指定 has_many/has_one 感到困惑。事实证明我不需要。
    • 除非您打算参考帐户的交易,否则不会。
    • 我正要添加这个问题。我应该如何称呼类似:account_one.transactions_as_issuer?
    • 查看更新的:foreign_key 东西;当我说使用 :inverse_of 时,我并没有想到。
    • 非常感谢。在用户体验方面,SO 不能比这更好:) 我从中学到的是,belongs_to 和 has_one/many 可以独立定义。具有多个“角色”时,必须明确声明外键。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多