Rails:只加载一个属性而不是整个模型

And*_*rew 9 sql activerecord ruby-on-rails ruby-on-rails-3

可以说我有一个模型,Foo它很大并且有很多组件.对于给定的Ajax查询,我只对一个特定属性感兴趣bar,这是foos表中的一列.

有没有一种简单的方法可以加载该属性,而不用费心去检索记录的其余部分?例如,如果我想知道的是ID为#_ _的 Foo栏,我该如何检索?

Rya*_*ner 14

通过select使用包含要返回的属性的字符串调用方法,只能返回特定列.对于你的例子:

Foo.select('bar').first    #<Foo bar: 1>
Run Code Online (Sandbox Code Playgroud)

请记住,这些对象将像普通的ActiveRecord对象一样工作,但nil对于您未选择的任何字段返回,因此请注意使用此功能.

您可以在类名称本身或任何Relation上调用select,这样您就可以将通常使用的ActiveRecord调用链接在一起where,等等.


Him*_*tel 7

我更喜欢这个

User.where(:id => user_id).pluck(:user_name).first #'tom'
Foo.where(:age => 23).pluck(:user_name) #['tom', 'jerry', ...]
Run Code Online (Sandbox Code Playgroud)