Search code examples
rubyarraysobjectruby-on-rails-4pluck

How to get an object from an array Ruby on Rails


In controller I use pluck method to get id and name from my database

@user1 = User.where(name: 'Alex').pluck(:id, :name).first 
@user2 = User.where(name: 'Alex').pluck(:id, :name)

It return array

@user1 = `[3, 'Alex']` 
@user2 = [[3,'Alex'],[4, 'Alex']]

How can I make object from array, like:

@user1 = <User id:3, name:'Alex'> 
@user2 = [<User id:3, name:'Alex'>, <User id:4, name:'Alex'>]

Solution

  • Try:

    users = User.where(name: 'Alex').pluck(:id, :name).map do |id, name|
      User.new({ id: id, name: name })
    end
    

    Or from provided variables:

    @user1_obj = User.new(id: @user1[0], name: @user1[1])
    @user2_arr = @user2.map { |params| User.new(id: params[0], name: params[1]) }
    

    Please, be advised, you should let ORM do the thing for you, rather building objects on your own.

    Hope that helps!