0

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

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

4

1 回答 1

0

如果你想使用模块来定义类方法,你应该使用该extends方法。

class User < Sequel(..)
  extend ::Validations
  validates_email(:email)
  ...
end

我建议阅读这篇文章:http ://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/

于 2012-04-16T12:41:58.563 回答