如何在范围内使用模型方法?

时间:2014-07-17 17:47:25

标签: ruby ruby-on-rails-3 activeadmin

我有一个方法:

def can_book_appointment?

我希望在activeadmin gem的范围内使用它

scope :cannot_book_appointment, lambda { |self| , {:condition => !self.can_book_appointment?}

我确实尝试了

scope :place_cannot_book, lambda { PlaceDetail.all.reject{|n| !n.can_book_appointment?} }

但我在activeadmin中收到错误:

  

未定义的方法'重新排序'对于#<阵列:0x121bf5e8>

我知道这不起作用,但它有助于了解我的意图。 如何在模型的每个记录上使用此方法?

1 个答案:

答案 0 :(得分:3)

你做不到。范围应用于数据库级别,您的can_book_appointment?方法存在于模型级别。他们不能以你试图让他们互动的方式互动。

您需要定义第二个范围,该范围应用can_book_appointment?执行的相同检查,但在数据库级别。