How to select only specific attributes from a model?

前端 未结 8 1604
傲寒
傲寒 2021-01-02 05:20

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

相关标签:
8条回答
  • 2021-01-02 05:41

    Pretty old question, but the rails 3 way would be:

    User.pluck(:id)
    
    0 讨论(0)
  • 2021-01-02 05:43

    SQL

    SELECT id,name,username FROM Users

    RUBY

    User.select(:id, :name, :username)

    with condition, you can write like: User.select(:id, :name, :username).find_by(:age 22)

    0 讨论(0)
  • 2021-01-02 05:43

    actually for you only need write this

    @user= User.select(:attributeN, :attributeN......., attributeN)
    respond_to do |format|
      format.json {
        render json: @user
      }
    
    0 讨论(0)
  • 2021-01-02 05:51

    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'}, ... ]

    0 讨论(0)
  • 2021-01-02 05:52

    We can use select for symbol or string such as:

    User.select("id, name, username")
    

    or

    User.select(:id, :name, :username)
    
    0 讨论(0)
  • 2021-01-02 05:53

    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

    0 讨论(0)
提交回复
热议问题