将'if'语句转换为命名范围

时间:2014-12-30 10:02:07

标签: ruby-on-rails ruby scope named-scope

<% @training_dates.reverse.each do |t| %>
  <% if t.candidate_limit != Subscription.group(:training_date_id).count[t.id] %>
      <%= t.name %>
  <% end %>
<% end %>

我想将此if语句转换为范围,以便我可以@training_dates.(scope).reverse.each

1 个答案:

答案 0 :(得分:0)

我不知道您的其他模型是什么,但training_date模型的示例范围应如下(对于rails 4):

class TrainingDate
   scope :sss, -> do
      where.not(candidate_limit: Subscription.group(:training_date_id).count(:id))
           .order(:desc)
   end
end

然后:

sss.each { |t| t.name }

对于其他rails版本,您必须使用 gem。