我有一个模型可以扩展ActiveRecord::Base
并包含一个问题:
class User < ActiveRecord::Base
include UserConcern
def self.create_user()
...
results = some_method()
end
end
UserConcern
存放在concerns
目录中:
module UserConcern
extend ActiveSupport::Concern
def some_method()
...
end
end
当我尝试通过调用如下create_user
所示的方法创建新用户时出现运行时错误:
undefined method 'some_method' for #<Class:0x000000...>
我对此有两个问题:
为什么是
some_method
未定义的?在我看来,我正确地将它包含在语句中include UserConcern
。这与我的User
课程扩展有关ActiveRecord::Base
吗?或者可能与我some_methods()
从类方法(即self.create_user()
)调用的事实有关?为什么运行时错误是指
#<Class:0x000000...>
而不是 to#<User:0x000000...>
?