Rails / Ruby: получение подмножества объектов после запроса .find - PullRequest
0 голосов
/ 11 марта 2011
@video = Video.find(params[:id])

Видео имеет параметр с именем description. Я хотел бы получить подмножество @video, где: описание пусто. Я уверен, что есть встроенный оператор типа .each, который бы это делал, но понятия не имел, как.

Спасибо

Ответы [ 3 ]

4 голосов
/ 11 марта 2011

Для начала, в вашем примере кода вы получаете только одну запись.Чтобы получить все записи, вам нужно позвонить:

@videos = Video.all

Чтобы получить подмножество, все зависит от того, как вы хотите это сделать.Вы можете сделать это, когда запрашиваете базу данных:

# Rails 2
@videos = Video.find(:all, :conditions => ['description = ? OR description IS NULL', ''])

# Rails 3
@videos = Video.where('description = ? OR description IS NULL', '')

Или вы можете разбить массив @videos, используя метод Ruby:

# Find all our videos
@videos = Video.all

# And then pick the ones where the description attribute is blank
@videos_with_blank_description = @videos.select { |v| v.description.blank? }

Array#select isметод в Enumerable, который выполняет итерацию по массиву и возвращает элементы, для которых аргумент блока имеет значение True:

http://www.ruby -doc.org / core / classes / Enumerable.html # M001488

1 голос
/ 11 марта 2011

Вы имеете в виду что-то вроде:

#Rails 2.3: 
Video.all(:conditions => {:description => nil})

#Rails 3:   
Video.where(:description => nil)
0 голосов
/ 11 марта 2011

Попробуйте

@videos = Video.all(:conditions => [ "description IS NULL OR description = ?", '' ])

Это должно вытянуть все видео с нулевым или пустым описанием. Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...