两个模型(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>
我能以这种方式跨越模型集合边界吗?
答案 0 :(得分:0)
要访问user
的{{1}},您必须使用类似
profile
或者,如果你想要的只是@user = User.visible(:include => :profiles)
@user.first.profile
,我相信你应该做点什么
full_name
但可能有更好的方法......看起来不漂亮= P