Как найти ЛЮБЫЕ записи, которые соответствуют критериям - PullRequest
1 голос
/ 23 марта 2012

У меня есть приложение ruby ​​(1.9.3) на rails (3.1), где:

app / models / list.rb

class List < ActiveRecord::Base
  has_many :tasks
  #...
end

app / models / task.rb

class Task < ActiveRecord::Base
  belongs_to :list
  #...
end

Я пытаюсь перебрать задачи списка для поиска, если есть ЛЮБЫЕ задачи, которые имеют

task.planned_for.blank? or task.mins.blank?

По существу, если цикл находит либо, мне нужно условно отобразить некоторый код представления,Мысли?

Ответы [ 2 ]

2 голосов
/ 23 марта 2012

SQL-эквивалент ActiveSupport # blank? это:

column_name IS NULL OR column_name = ''

так в вашем контроллере показывают метод:

@list = List.find(params[:id])
@tasks = @list.tasks.where("planned_for IS NULL OR planned_for = '' OR mins IS NULL OR mins = ''")

по вашему мнению:

<% if @tasks.any? %>
  <% #do some stuff %>
<% else %>
<% end %>
0 голосов
/ 23 марта 2012

Предполагая, что запланированные_ и мин. Являются фактическими атрибутами задачи:

List.first.tasks.where('tasks.planned_for IS NULL OR tasks.mins IS NULL')

Вы также можете использовать это условие в области действия задачи:

scope :my_scope, -> { where('tasks.planned_for IS NULL OR tasks.mins IS NULL') }

То есть

List.first.tasks.my_scope

Я использовал скобки в определении области видимости, потому что обходиться без них, по-видимому, не рекомендуется в Rails 4.Это основано на NULL, а не на #blank, потому что я обычно настаиваю на том, чтобы в базе данных не было пустых строк.

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