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
-~----------~----~----~----~------~----~------~--~---