如何从Ruby on Rails上的数组中获取对象
在控制器中,我使用Pull方法从数据库中获取id和名称如何从Ruby on Rails上的数组中获取对象,ruby,arrays,object,ruby-on-rails-4,pluck,Ruby,Arrays,Object,Ruby On Rails 4,Pluck,在控制器中,我使用Pull方法从数据库中获取id和名称 @user1 = User.where(name: 'Alex').pluck(:id, :name).first @user2 = User.where(name: 'Alex').pluck(:id, :name) 它返回数组 @user1 = `[3, 'Alex']` @user2 = [[3,'Alex'],[4, 'Alex']] 如何从数组生成对象,如: @user1 = <User id:3, name:'Al
@user1 = User.where(name: 'Alex').pluck(:id, :name).first
@user2 = User.where(name: 'Alex').pluck(:id, :name)
它返回数组
@user1 = `[3, 'Alex']`
@user2 = [[3,'Alex'],[4, 'Alex']]
如何从数组生成对象,如:
@user1 = <User id:3, name:'Alex'>
@user2 = [<User id:3, name:'Alex'>, <User id:4, name:'Alex'>]
@user1=
@user2=[,]
试试:
或从提供的变量:
@user1_obj = User.new(id: @user1[0], name: @user1[1])
@user2_arr = @user2.map { |params| User.new(id: params[0], name: params[1]) }
请注意,您应该让ORM为您做这件事,而不是自己构建对象
希望有帮助 但是pull返回一个数组,而不是散列。还是我错了?啊是的。。。我被你提供的代码示例弄糊涂了。我刚刚更新了答案!删除
pulk
,即@user1=User.where(name:'Alex')。第一个@Stefan,但比第一个更快,因为它不会实例化记录。如果您在事后自己实例化记录,这是毫无意义的。
@user1_obj = User.new(id: @user1[0], name: @user1[1])
@user2_arr = @user2.map { |params| User.new(id: params[0], name: params[1]) }