2012-08-28 56 views
0

我在为我的Rails应用程序的辅助下选择:Rails选择Empty方法?

def unit_select 
    Unit.all.map{|unit| unit.calls.empty? ? [unit.unit_name, unit.id] : ["#{unit.unit_name} (on call)", unit.id] } 
    end 

这样做是寻找具有呼叫和单位,如果该单位有电话的append(随叫随到)旁边的单元以一种形式。我看到这个问题是当它去寻找unit.calls.empty?它考虑到了状态为“已关闭”的通话记录,这不应该被考虑在内。

是否有另一种方法,我可以使用(或写),让我看看unit.calls传递是否在call_status打开电话?

回答

0

在您的单元模型中,您可以覆盖空?在调用关联方法:

class Unit < ActiveRecord::Base 
    has_many :calls do 
    def empty? 
     self.where(:call_status => :open).any? 
    end 
    end 
end 
+0

这完美的作品,但它覆盖的是空的?方法,以防我需要在其他地方使用它。我试图将其重命名为分配?并在我的帮手中使用它,但它失败。这是Rails中的一个约束,只允许空?作为一种方法? – nulltek

+0

nope,你可以使用任何你想要的方法,不应该有问题。 –

+0

其实,罢工。当我关闭一个电话时,它将call_status设置为“关闭”,并且在表单中仍然显示单元(打电话) – nulltek