从引擎扩展rails类

时间:2014-12-16 17:25:32

标签: ruby-on-rails ruby ruby-on-rails-3

我正在为我的应用创建一个简单的插件系统。目前,我还没有能够从引擎文件中扩展我的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

但似乎这不是一种正确的做法,因为它不起作用。我可能缺乏关于ruby类或rails如何工作的基本知识,所以如果有人能帮助我,我会非常感激。

提前致谢!

1 个答案:

答案 0 :(得分:0)

如果您对子类化没问题,我建议您执行以下操作

让您的引擎扩展名称空间(如

)下的基类
    module MyEngine
      class Post < Post
        .....
      end
    end

无需eval,只需继承基类并根据需要进行扩展。