rails named_scope问题与急切加载

时间:2010-06-12 14:30:48

标签: ruby-on-rails named-scope

两个模型(Rails 2.3.8):

用户;用户名和&残疾人财产;用户has_one:个人资料 轮廓; full_name&隐藏属性

我正在尝试创建一个named_scope来消除disabled = 1和hidden = 1 User-Profiles。此外,虽然User模型通常与Profile模型一起使用,但我希望能够灵活地使用:include =>来指定它。 :profile语法。

我有以下用户named_scope:

  named_scope :visible, {
    :joins => "INNER JOIN profiles ON users.id=profiles.user_id",
    :conditions => ["users.disabled = ? AND profiles.hidden = ?", false, false]
  }

仅在引用User模型时按预期工作:

>> User.visible.map(&:username).flatten
=> ["user a", "user b", "user c", "user d"]

但是,当我尝试包含Profile模型时:

User.visible(:include=> :profiles).profile.map(&:full_name).flatten

我收到的错误是:

NoMethodError: undefined method `profile' for #<User:0x1030bc828>

我能以这种方式跨越模型集合边界吗?

1 个答案:

答案 0 :(得分:0)

要访问user的{​​{1}},您必须使用类似

的内容
profile

或者,如果你想要的只是@user = User.visible(:include => :profiles) @user.first.profile ,我相信你应该做点什么

full_name

但可能有更好的方法......看起来不漂亮= P