has_one关联选择特定字段

时间:2012-07-23 11:14:16

标签: ruby-on-rails-3 activerecord

我有user模型has_oneuser_profile

的关联

我想从user_profile而不是user_profile中选择名称字段。*

我试过了,

user = User.first
user.user_profile.select(:name) 

但这不起作用。无论如何?

1 个答案:

答案 0 :(得分:1)

<强>更新:

看起来,rails会以不同方式处理另一个方向和一对一连接。您有两种选择:

1)在关联中定义所选属性,它将始终选择那些

has_one :user_profile, :select => [:name, :id]

2)在模型中定义特定的查找,您可以在其中添加select,如下所示:

def my_profile
  UserProfile.find(self.user_profile_id)
end

....

my_profile.select(:name)

<强> ORIGINAL:

如果has_many方向,则有效:

我在我的代码中尝试过您的方法,例如:

= User.find("admin").article.select(:title).to_sql

它返回正确的sql:

SELECT title 
FROM "articles"
WHERE "articles"."user_id" = 1364