【问题标题】:Rails: How can this be done with a has_one association?Rails:如何通过 has_one 关联来实现?
【发布时间】:2012-10-28 01:16:41
【问题描述】:

我的模型有两列,一列名为foo_id,另一列名为bar_id

我想知道是否可以将这两个简单的方法变成 has_one 关联:

class SomeModel < ActiveRecord::Base
  def foobar_foo
    Foobar.find( self.foo_id )
  end

  def foobar_bar
    Foobar.find( self.bar_id )
  end
end

也许我已经盯着文档太久了,但我似乎找不到方法告诉 Rails 使用 self.foo_id 作为另一个模型的外键。

我知道,在大多数情况下,这应该是 has_many :throughbelongs_to,但为了争论,我有兴趣了解 has_one 是否可以实现这一点

【问题讨论】:

    标签: ruby-on-rails ruby associations model-associations has-one


    【解决方案1】:

    这有帮助吗?

    has_one :foo, class_name: "Foobar", foreign_key: :foo_id
    has_one :bar, class_name: "Foobar", foreign_key: :bar_id
    

    http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html#method-i-has_one

    【讨论】:

      【解决方案2】:

      终于有机会重新审视这个问题,顺便说一句,在尝试的最初几分钟内偶然发现了一个解决方案..

        has_one :bar, primary_key: :bar_id, foreign_key: :id, class_name: 'Foobar'
        has_one :foo, primary_key: :foo_id, foreign_key: :id, class_name: 'Foobar'
      

      按预期工作。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多