【问题标题】:Rails inverse_of confusionRails inverse_of 混淆
【发布时间】:2013-04-22 06:39:05
【问题描述】:

我有这两个模型:团队和用户。

每个用户都可以有团队,每个团队都有很多用户。但我想用 team.members 调用 team.users。我设法用 class_name 做到了这一点,但我还需要按用户访问团队。换句话说 user.team 应该返回我用户所在的团队。这是我想出的...

我的模型如下:

class Team < ActiveRecord::Base
  has_many :members, foreign_key: 'id', class_name: 'User', :inverse_of => :team
end

class User < ActiveRecord::Base
  belongs_to :team, :inverse_of => :user
end

(我也尝试在 User 模型中使用 :inverse_of => :members。)

【问题讨论】:

    标签: ruby-on-rails associations relationship


    【解决方案1】:

    :inverse_of 是正确的,至少在您使用 :inverse_of =&gt; :members 时是这样。这里的问题是外键。 foreign_key 指定另一个表中键列的名称,因此在您的情况下是在用户表中。如果您仅指定id,则将使用用户的 id。只需将其保留为默认值,不指定外键,然后指定其team_id

    class Team < ActiveRecord::Base
      has_many :members, :class_name => 'User', :inverse_of => :team
    end
    
    class User < ActiveRecord::Base
      belongs_to :team, :inverse_of => :members
    end
    

    并且尽量不要将 ruby​​ 1.8 (:key =&gt; 'value') 中的哈希语法与 ruby​​ 1.9 (key: 'value') 中的新语法混用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-06-01
      • 2011-12-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多