Plugin Development and Models

Added by Jeremy Jackson over 9 years ago

I'm writing a Todos plugin, and I'm wondering how I can "modify" the Project model without actually modifying it in the application.

I want to inject a has_many into the Project model, and I'm unsure how to accomplish this.

Does anyone have any comments or ideas? I'd be happy to put some information about this in the wiki when I'm done working out all the details. Is this even possible?


Replies (1)

RE: Plugin Development and Models - Added by Eric Davis about 9 years ago

This should work for you:

# init.rb
# ... normal plugin init stuff ...
module ProjectPatch
  def self.included(base)
    # Same as typing in the class 
    base.class_eval do
      unloadable # Send unloadable so it will not be unloaded in development

      has_many :todos


Project.send(:include, ProjectPatch)

You can also extend a core Model with additional behaviors. For an example, check out issue_patch.rb in my Budget plugin (