2013-01-11 37 views
0

我知道如果我們想通過使用查找或只是選擇一些特定的列或是這樣的。如何僅在使用ActiveRecord查詢時選擇特定列?

Post.find(10).select("column1") 

但是,當我寫這樣post.user.username(依靠ActiveRecord關聯)的代碼,如果我想從user表僅選擇幾個欄目,我無法找到一個方法來做到這一點。

+1

你可以隨時加載它們:'User.where(post_id:post.id).select('first_name,last_name')' –

+0

是的。但是,當使用這樣的post.user.username(依賴於ActiveRecord關聯)的代碼時,我沒有看到任何指定列名的方法。 – silent

+0

如果你找不到方法,我不會感到驚訝。至少可以說,這不是一個很常見的關聯用例。 –

回答

1

在您的文章模型,你可以按照如下方式定義的關聯:

belongs_to :user, :select => [:username] 

然後通過後期指的是用戶只會選擇規定列。

+0

謝謝!有什麼方法可以自定義控制器級別的列名稱嗎? – silent

+0

我不這麼認爲......你可以只爲該控制器創建一個關聯,並只在那裏使用它,比如:'belongs_to:user_for_posts_controller,:select => [:username],:class_name =>「User」 –

0

你可以使用選擇選項

選擇所有帖子的用戶名

Project.select(["id", "name"]) 

用where條件

Project.select(["id", "name"]).where("id=1") 

HTH

0

你可以這樣做:

Post.find_by_sql("select * from posts P inner join users U on U.id = P.user_id where U.id = 10").collect{|x| x.<column_name>} 
相關問題