我正在用Ruby on Rails为Redmine编写一个插件。我需要让所有的 "用户 "将他们链接到一个 "技能 "上。因此,我需要所有用户与我的技能建立关系。由于这是一个插件,我不想在Redmine的主用户模型中写东西。所以,我有点想扩展或什么的原始用户模型.任何人有一个线索,我可以解决这个问题?
如果你想给一个已经存在的类添加逻辑(比如添加新的方法、关系、验证等),你可以用Ruby来实现 Module#class_eval
:
User.class_eval do
# Inside this block we add the new logic that we want to add to the User class
def new_method
end
end
为了在Redmine中给模型打补丁,我曾经使用过这种方法。
# plugins/your_plugin_name/lib/your_plugin_name/user_path.rb
module YourPluginName
module UserPatch
extend ActiveSupport::Concern
included do
has_many :skills
end
def some_new_method
end
end
end
User.include YourPluginName::UserPatch