rails -airas_method_chain with 'abtribute ='メソッド
-
21-09-2019 - |
質問
モジュールが含まれている場合は、モジュールを介してモデルのメソッドにコードを「追加」したいと思います。私はairas_method_chainを使用する必要があると思いますが、私の「エイリアスメソッド」は「= 'sign:」で終わる方法の1つであるため、それを使用する方法がわかりません。
class MyModel < ActiveRecord::Base
def foo=(value)
... do stuff with value
end
end
これが私のモジュールが今見えるものです:
module MyModule
def self.included(base)
base.send(:include, InstanceMethods)
base.class_eval do
alias_method_chain 'foo=', :bar
end
end
module InstanceMethods
def foo=_with_bar(value) # ERROR HERE
... do more stuff with value
end
end
end
関数定義にエラーが発生します。これをどのように回避しますか?
解決
alias_method_chain
単純な2行の方法です。
def alias_method_chain( target, feature )
alias_method "#{target}_without_#{feature}", target
alias_method target, "#{target}_with_#{feature}"
end
私はあなたが望む答えは単に2つを作ることだと思います alias_method
この場合、自分自身を呼びます:
alias_method :foo_without_bar=, :foo=
alias_method :foo=, :foo_with_bar=
そして、あなたはそうするようにあなたの方法を定義するでしょう:
def foo_with_bar=(value)
...
end
Rubyシンボルは、トレイルを処理します =
と ?
問題のないメソッド名の。
所属していません StackOverflow