2014-12-30 44 views
0
<% @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打開「如果」語句到一個名爲範圍

+0

我認爲您需要添加一些關於'@ traqining_dates'變量,'Subscription'模型,以及Model for Variable的範圍添加如下:'Subscription.training_date_count'以返回trainging_date的數量 –

+0

爲什麼不使用範圍我們幫助你在[Your Previous Question]中定義(http://stackoverflow.com/questions/27620689/named-scope-for-counting-children)。這將是等同的。所以'@training_dates = TrainingDate.not_full.reverse'然後'@training_dates.each do | t |'。我不確定你對這篇文章的評論意味着什麼時候你說「不適用於新的」。它的工作原理是什麼時候打電話很明顯,如果有人在通話後註冊,除了通知用戶TrainingDate現在已滿,您可以做的不多。 – engineersmnky

回答

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版本你必須用戶寶石。