2017-02-03 52 views
0

時未定義的方法錯誤我有以下的用戶模型:的Rails:作用域

class User < ApplicationRecord 
    # Associations 
    has_many :issues 
    # Instances 
    def has_issues? 
     issues.resolved.exists? 
    end 
end 

和問題型號:

unless current_user.has_issues 

class Issue < ApplicationRecord 
    # Associations 
    belongs_to :user 
    # Scopes 
    scope :resolved, -> { where(:resolved => true) } 
end 

如果我現在在我看來有點像打電話

我收到以下錯誤:

NoMethodError in Controller#index
undefined method `has_issues' for #<User:0x72dd7c0>

我在做什麼錯?

回答

1

作用域是您在類上調用的方法(例如User.has_issues)或ActiveRecord :: Relation(例如User.where(...).has_issues)。您無法在模型的實例上調用範圍方法。如果你想獲得關於模型的實例的信息,你應該使用實例方法,而不是一個範圍:

class User < ApplicationRecord 
    has_many :issues 

    def has_issues? 
    issues.resolved.exists? 
    end 
end 
+0

即使我用一個實例方法... – jonhue

+0

你能編輯我仍然得到同樣的錯誤你的問題包括你更新的代碼? (請注意,我的代碼在方法名稱末尾有一個問號,因此請確保對此進行說明。) –

+0

我編輯了問題。 – jonhue