繁体   English   中英

如何通过猴子补丁添加模型属性字段?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM