Тестирование стоимости каждой связанной модели - PullRequest
1 голос
/ 15 апреля 2010

Предоставляет ли Ruby (или Rails) простой способ сделать следующее:

if @author.articles.each(:published == true)
  puts "all articles of this author are published"
end

Я думаю, что пример говорит сам за себя.

Ответы [ 3 ]

0 голосов
/ 15 апреля 2010

Или, если вам не нужно загружать статьи ...

if @author.articles.count == @author.articles.count(:conditions => { :published => true })
 puts "..."
end
0 голосов
/ 15 апреля 2010

Я думаю, что есть еще один:

ставит "все статьи #ndom@author.nameменно опубликованы", если @ author.articles.all? (&: Опубликовано?)

0 голосов
/ 15 апреля 2010

Может быть, кто-то найдет что-то лучше, но вот некоторые вещи, которые будут работать:

unless @author.articles.map{|a| a.published == true}.include?(false)
  puts "all articles of this author are published"
end

или ...

if @author.articles.select{|a| !a.published}.size == 0
  puts "all articles of this author are published"
end

или ...

if @author.articles.detect{|a| !a.published}.nil?
  puts "all articles of this author are published"
end

Мои предпочтения относятся к последнему.

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