Gem, пользовательский метод сохранения для рельсов - PullRequest
2 голосов
/ 02 августа 2011

Я не могу понять это из того, что я прочитал в Google, но я хочу создать драгоценный камень, который изменит поведение модуля при его сохранении, но я не знаю, как это сделать.Как определить в Gem метод сохранения, который переопределяет метод сохранения модели?

Обновление: Я нашел Rails 3: alias_method_chain все еще используется? , которыйпроверим.Похоже, что alias_method_chain устарела для Rails 3.

Ответы [ 2 ]

2 голосов
/ 22 августа 2011

Я бы предпочел сделать это:

module YourModule

  def self.included(base)
    base.extend(InstanceMethods)
  end

  module InstanceMethods

    def save
      # Your behavior here
      super # Use this if you want to call the old save method
    end
  end
end

А потом в модели:

class User < ActiveRecord::Base
  include YourModule
end

Надеюсь, это поможет:)

1 голос
/ 02 августа 2011

Использование alias_method_chain:

module YourModule

  def self.included( base )
    base.send(:include, YourModule::InstanceMethods )
    base.alias_method_chain :save, :action
  end

  module InstanceMethods

    def save_with_action
      # do something here
      save_without_action
    end

  end

end

Затем вы включаете модуль в свой объект AR:

class User < ActiveRecord::Base
    include YourModule
end
...