2011-07-27 48 views

回答

0

您可以使用Model.send(:valid_scope_name?, scope_name)來測試範圍是否存在於該類中。範圍在Rails 2.x中確實有意義,但在3.x中不再有關係對象。

所以不是:

scope :red_ones, where(color: 'red') 

你必須:

def self.red_ones 
    where(color: 'red') 
end 
+1

我不想使用valid_scope_name?因爲它是受保護的方法並記錄了一條奇怪的警告消息:logger.warn「Creating scope:#{name}。」「覆蓋現有方法#{self.name}。#{name}。」 我想使用範圍而不是方法(如您所建議的),因爲它使我的代碼更好,我希望能夠測試它是否是範圍或文檔指定應該是可能的。 – Peder

+0

我遇到了這個問題,測試範圍的存在。我將斷言從'assert klass.scopes.include?(name)'改爲'assert klass.name'。這並沒有回答上述問題,但確實對我有幫助。希望這可以幫助別人。 –

+0

opps。最後一個代碼應該是'assert klass.try(name)',其中'name'是作用域的名稱。 –

相關問題