2012-06-15 47 views
0

在我的模型中,我想創建一個範圍,利用了也在我的模型中的方法Rails 3 - 創建一個利用方法的範圍

我有以下的模型方法:

def is_paired 
    ! pairing_id.nil? 
    end 

我想提出一個範圍,看起來像這樣

scope :paired, where(:is_paired => true) 

但是當我做我得到一個錯誤:

SQLite3::SQLException: no such column: participants.is_paired: SELECT "participants".* F... 

如何創建一個範圍利用方法在我的模型?

+0

下面的代碼的工作原理類似於範圍。但是,它返回一個數組而不是一個ActiveRecord :: Relation。 def self.paired self.all.find_all {| item | item.is_paired} end – Selah

回答

1

你不能。基本上用於範圍如whereorder等方法。被「翻譯」爲SQL查詢。 Rails不知道如何將自定義方法轉換爲sql查詢。 反正你可以用下面的辦法:scope :paired, where('pairing_id IS NOT NULL') 有關詳細信息,您可以檢查:Rails where condition using NOT NULL

+0

謝謝你......你的回答爲我澄清了一些事情。 – Selah