0

我有与之关联的user模型has_oneuser_profile

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

我努力了,

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

但这不起作用。有什么办法吗?

4

1 回答 1

1

更新:

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

1)在关联中定义选择的属性,它总是会选择那些

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

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

def my_profile
  UserProfile.find(self.user_profile_id)
end

....

my_profile.select(:name)

原来的:

has_many方向的情况下,它的工作原理:

我已经在我的代码中尝试了你的方法,比如:

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

它返回正确的 sql:

SELECT title 
FROM "articles"
WHERE "articles"."user_id" = 1364
于 2012-07-23T11:40:02.290 回答