2012-02-04 300 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它。