Forum: Ruby on Rails :include => :works, :select => ...

Announcement (2017-05-07): is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see and for other Rails- und Ruby-related community platforms.
Helder O. (Guest)
on 2007-02-21 18:01
@c = Client.find(  :all,
      :select => 'denominacao',
      :include => :works,
      :conditions => 'works.estado = 1')

im trying to get only one field "denominacao" but i get them all, is
there a way to get only one, using activerecord ofc...
Chris H. (Guest)
on 2007-02-21 21:48
(Received via mailing list)
well, you're going to get a bunch of Client objects using find,
however, you should only get the attributes you specify in the :select
option, instead of all the attributes.

>> User.find(:all, :select => 'login')
=> [#<User:0xb771061c @attributes={"login"=>"foo"}>, #<User:0xb77105e0
@attributes={"login"=>"goo"}>, #<User:0xb77105a4
@attributes={"login"=>"bar"}>, #<User:0xb7710568

>> User.find(:all, :select => 'login').collect { |u| u.login }
=> ["foo", "goo", "bar", "baz"]

another option is to drop down into the connection and run your query,
if you want to skip the above, but you'll have to write out your sql.

>> ActiveRecord::Base.connection.select_value("select login from users")
=> ["foo", "goo", "bar", "baz"]
Helder O. (Guest)
on 2007-02-21 23:39
got it ;)

thanks a lot
This topic is locked and can not be replied to.