[英]How to add model attribute fields by monkey patching?
我已经知道如何在类中添加(包含、添加)方法。 但是如何添加属性呢? 例如,我想通过添加has_one字段来修补核心模型,我该怎么做? 提前致谢。
前任
class Project < ActiveRecord::Base
include Redmine::SafeAttributes
include Redmine::NestedSet::ProjectNestedSet
# Specific overridden Activities
has_many :time_entry_activities
has_many :memberships, :class_name => 'Member', :inverse_of => :project
# Memberships of active users only
has_many :members,
lambda { joins(:principal).where(:users => {:type => 'User', :status => Principal::STATUS_ACTIVE}) }
我想再添加一个 has_many / has_one 字段,而不是编辑此类 - 这是在项目核心中,但作为猴子补丁 -> 从插件目录中再包含一个 has_many
找到了解决办法。
def self.included(base) # :nodoc:
base.class_eval do
unloadable
has_many :project_descriptions
end
end
Project.send(:include, Module::Patches::ProjectPatch)
向类中添加字段,这里的base代表包含的类, class_eval在该类的上下文中进行评估。 有关 class_eval、instance_eval 的更多信息,请访问https://www.jimmycuadra.com/posts/metaprogramming-ruby-class-eval-and-instance-eval/
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.