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

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
D82e1620b63912765315e87da27e7ae3?d=identicon&s=25 Helder Oliveira (kaydara)
on 2007-02-21 17: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...
A2c85dc5ee81b12e3cc0a6522e8d079d?d=identicon&s=25 Chris Hall (au5lander)
on 2007-02-21 20: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
@attributes={"login"=>"baz"}>]

>> 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"]
D82e1620b63912765315e87da27e7ae3?d=identicon&s=25 Helder Oliveira (kaydara)
on 2007-02-21 22:39
got it ;)

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