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

私が得ているエラーは次のとおりです: User:classの未定義のメソッド'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 に答える