Rails模块问题 - 用户:class的未定义方法'validates_email'

时间:2012-04-16 12:36:28

标签: ruby module ruby-1.9.3

我有一个名为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':类

我缺少什么使这项工作正常?

1 个答案:

答案 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/