我正在制作一个插件,我需要它来覆盖我的模型的 setter/getter。这是我到目前为止的代码:
module Iplong
extend ActiveSupport::Concern
module ClassMethods
...
def override_setter
self.class_eval %(
def #{attribute}=(raw_value)
self[:#{attribute}] = #{ip2long('raw_value')}
end
)
end
end
end
ActiveRecord::Base.send :include, Iplong
注意raw_value
参数。如果我在评估代码中打印它,它会打印设置属性时出现的正确值,但是如果我在ip2long
发送它的函数内打印它,它会返回一个字符串:raw_value
那么我如何传递这个参数而不将它解释为字符串?