2012-04-16 56 views
0

我有一個名爲User的類,需要包含一個模塊。 類看起來像這樣:Rails模塊問題 - 未定義的方法'validates_email'用戶:類

require 'sequel' 
require 'modules/validations' 

class User < Sequel(..) 
    many_to_one :country 
    includes ::Validations 

    validates_email(:email) 
end 

該模塊是在稱爲模塊的子文件夾中定義。它已被添加到$ LOAD_PATH,Ruby不抱怨加載。該模塊是這樣的:

module Validations 
    def validates_email(attr, options = {}) 
     email = super.email 
    end 
end 

我得到的錯誤是:爲用戶 未定義的方法「validates_email」:類

我缺少什麼,使這項工作正常?

回答

0

如果你想使用模塊來定義類的方法,你應該使用extends方法。

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

我建議您閱讀這篇文章:http://railstips.org/blog/archives/2009/05/15/include-vs-extend-in-ruby/

+0

這個問題解決了包括模塊的感謝。我可以在這個模塊中訪問我班的變量嗎? – 2012-04-16 13:13:11

+0

您應該可以正常訪問它們 – gmalette 2012-04-16 14:21:18

+0

這不應該是「擴展」,而不是「擴展?」 – rpearce 2013-04-08 19:47:04

相關問題