The plugin is db-populate

in vendor/plugins/db-populate/lib/create_or_update.rb:
class ActiveRecord::Base
  # given a hash of attributes including the ID, look up the record by
ID.
  # If it does not exist, it is created with the rest of the options.
  # If it exists, it is updated with the given options.
  #
  # Raises an exception if the record is invalid to ensure seed data
is loaded correctly.
  #
  # Returns the record.
  def self.create_or_update(options = {})
    id = options.delete(:id)
    record = find_by_id(id) || new
    record.id = id
    record.attributes = options
    record.save!

    record
  end
end

I want to replace it with:
# db-populate monkey patch
# Patched to work even when the primary key != id
require 'active_record'
class ActiveRecord::Base
  # given a hash of attributes including the ID, look up the record by
ID.
  # If it does not exist, it is created with the rest of the options.
  # If it exists, it is updated with the given options.
  #
  # Raises an exception if the record is invalid to ensure seed data
is loaded correctly.
  #
  # Returns the record.
  def self.create_or_update(options = {})
    # Need to get the primary key, can't assume it's always id
    id = options.delete(primary_key.to_sym)

    record = send("find_by_#{primary_key}", id) || new
    record.id = id
    record.attributes = options
    record.save!

    record
  end
end

On Mar 11, 10:43 am, Frederick Cheung <[email protected]>
wrote:
> On Mar 11, 2:03 pm, Daly <[email protected]> wrote:
>
> > I am using a plugin that adds a method to ActiveRecord::Base. The
> > added method is called self.create_or_update. I need to monkey patch
> > this method. I tried in lib/ config/initializers and in
> > environment.rb, but the one in the plugin is always the one that is
> > run.
>
> Showing us what you've tried would be a useful starting point.
>
> Fred
>
>
>
> > Where do I put my version of the method so that it overrides that of
> > the plugin? I only use this method when running a rake task, so that
> > may have a bearing on the issue?
>
> > Thanks,
> > Ahmed
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Ruby 
on Rails: Talk" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to 
[email protected]
For more options, visit this group at 
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to