簡體   English   中英

從引擎擴展rails類

[英]Extending rails classes from engines

我正在為我的應用創建一個簡單的插件系統。 目前,我將無法從引擎文件內部擴展我的activerecord模型。

假設我有以下模型:

# /my_app/app/models/post.rb
class Post < ActiveRecord::Base
end

我想要實現的是能夠放入一個文件,例如/my_app/example_engine/app/example_engine/models/post.rb ,這將向Post類添加一些方法。 我試圖通過在文件中添加以下內容來做到這一點:

# /my_app/example_engine/app/example_engine/models/post.rb
Post.class_eval do
  def new_method
    "hello"
  end
end

但這似乎不是執行此操作的正確方法,因為它無法正常工作。 我可能缺乏有關紅寶石類或Rails如何工作的基本知識,因此,如果有人可以幫助我,我將非常感激。

提前致謝!

如果您可以接受子類化,建議您執行以下操作

讓您的引擎在諸如以下的名稱空間下擴展基類

    module MyEngine
      class Post < Post
        .....
      end
    end

無需評估,只需繼承基類並根據需要擴展它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM