Ruby rails-выберите только несколько столбцов из базы данных

как в rails структурировать sql-запрос, чтобы выбрать только определенные столбцы из базы данных, у меня есть некоторые большие поля данных, которые я хочу избежать загрузки из непрерывных периодических вызовов ajax. Чтение без необходимости потребляет много ресурсов и происходит медленно.

@itemlist = Item.find(:all, :conditions => { .... } ) #this select all columns 

Я ищу SELECT name, address FROM users; вместо SELECT * FROM users;

6 ответов


рельсы 3:

Item.select("name, address").where( .... )


использовать :select строительство. Попробуйте это:

@itemlist = Item.select('name, address', conditions: { .... } )

для предыдущей версии Rails:

@itemlist = Item.find(:all,:select => 'name, address', :conditions => { .... } )

используя Arel (он же в Rails 3), Используйте:

Item.where(...).select("name, address")

также, кажется .select игнорируется, если вы привязываете область, которая имеет :include => ...


@itemlist = Item.select('name, address').where(...#some condition)

попробуйте это:

@itemlist = Item.find(:all, :select => "name, address", :conditions => { .... } )

Если вы хотите выбрать определенные столбцы из rails console, pluck( будет работать. Пример:

2.4.1 :007 > User.connection
2.4.1 :006 > User.all.pluck(:email)
   (0.3ms)  SELECT `users`.`email` FROM `users`
 => ["test@test.com", "another_test@test.com"] 

обратите внимание, что это также будет работать внутри приложения Rails.