I want to select only specific attributes from a model(id,name).
The SQL-command can be for example:
SELECT id,name,username FROM Users
Do you know h
Pretty old question, but the rails 3 way would be:
User.pluck(:id)
SELECT id,name,username FROM Users
User.select(:id, :name, :username)
with condition, you can write like:
User.select(:id, :name, :username).find_by(:age 22)
actually for you only need write this
@user= User.select(:attributeN, :attributeN......., attributeN)
respond_to do |format|
format.json {
render json: @user
}
There's a :select
option on find methods. This allows you to do:
User.find(:all, :select => 'id, name, username')
The returned objects will be User
instances with those attributes available.
Or if you really want just the values without wrapping them us as User
instances. You can add a method to User
to return them.
def self.get_ids_and_names
self.connection.select_all("select id, name, username from users")
end
which will return an array of hashes mapping column name to the value for that row. E.g. [{'id' => 1, 'name' => 'user1', 'username' => 'username1'}, ... ]
We can use select
for symbol
or string
such as:
User.select("id, name, username")
or
User.select(:id, :name, :username)
You can also do
User.find(:all).map(&:id)
to get a list of the user ids if you are trying to get a list of user's ids or names