我有一个名为User的类,需要包含一个模块。 该课程如下:
require 'sequel'
require 'modules/validations'
class User < Sequel(..)
many_to_one :country
includes ::Validations
validates_email(:email)
end
模块在名为modules的子文件夹中定义。它已被添加到$ LOAD_PATH中,Ruby并没有抱怨加载。该模块如下所示:
module Validations
def validates_email(attr, options = {})
email = super.email
end
end
我得到的错误是: 用户的未定义方法'validates_email':类
我缺少什么使这项工作正常?
答案 0 :(得分:0)
如果要使用模块定义类方法,则应使用extends
方法。
class User < Sequel(..)
extend ::Validations
validates_email(:email)
...
end
我建议您阅读这篇文章:http://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/