2012-02-04 138 views
0

我正在创建一个身份验证引擎。它有一个内置的模型用户,其中包含一些基本信息。我想让它可以从引擎之外扩展(从父应用程序)。例如添加一些has_many关系。我几乎设法通过创建:扩展模型类

#host_app/app/models/my_user.rb 
calss MyUser < User 
    has_many :comments 

我以为是这样,但另一个问题结果。在我的引擎中,在用户显示动作的视图中,我生成了一个额外的部分,应该是在host_app/app/views/shared/_partial_to_add.html.erb我也通过@user。这应该使我能够添加一些关于用户的附加信息(比如他写的评论的列表或者其他),而不用接触引擎本身。但事实证明(这很明显),这个@user几乎是无用的,因为它没有MyUser类中的任何新方法。

任何想法如何解决这个问题?

回答

1

Ruby有公开的类。如果你想扩展您的发动机用户模型,你应该能够从父应用程序做到这一点:

User.class_eval do 
    has_many :comments 
end 

(这使用class_eval让Rails会自动加载定义用户之前评估这个代码的文件)把它放在一个文件中,这个文件将在应用程序执行时加载;把它放在config/initializers /中,或者把它放在lib /和require它。