在命名范围内使用sum和ifnull条件

时间:2013-05-08 09:36:17

标签: ruby-on-rails

我在'Book'模型中有以下命名范围

named_scope :batch_book_status_55, lambda { |batch_id| {
:select => "ifnull( sum( if( BK_DB_STATUS_FK = 55, 1, 0 ) ), 0) as ASSIGNED",
:conditions => ["BK_BATCH = ?", batch_id]
}}



<%  Book.batch_book_status_55(batch.BATCH_ID).each_with_index do |book, index| %>
  <% if book.ASSIGNED.to_i != 0%>
  Assigned : <%= book.ASSIGNED %> 
  <% end %>
<% end %

以下代码显示状态= 55(BK_DB_STATUS_FK = 55)的特定批次中的书籍数量。

我对命名的范围代码有点困惑。如果有人可以向我解释代码,我将不胜感激。

1 个答案:

答案 0 :(得分:1)

最好在这里使用self方法而不是命名范围。请参阅:http://www.railway.at/2010/03/09/named-scopes-are-dead/