私はこのスーパークラスを持っています
# encoding: utf-8
class EntidadeCte
include ROXML
include ActiveModel::Validations
class << self
# apelida o xml_accessor do ROXML para cte_attr
alias :cte_attr :xml_accessor
# define um accessor ruby comum para os atributos do cte
def xml_accessor(*attrs)
attr_accessor *attrs
end
# todos os atributos da entidade
def cte_attrs
roxml_attrs.map(&:attr_name)
end
end
# todos os atributos da entidade do objeto
def cte_attrs
self.class.cte_attrs
end
# retorna o xml representando a entidade
def to_cte
doc = Nokogiri::XML::Document.new
doc.root = to_xml
doc.serialize
end
# retorna o xml ou delega a classe herdada
def to_s
self.respond_to? :to_cte ? to_cte : super
end
end
そしてこのサブクラス
# encoding: utf-8
class TagCte < EntidadeCte
def initialize
self.xmlns = "http://www.portalfiscal.inf.br/cte"
end
xml_name :CTe
cte_attr :xmlns, :from => "@xmlns"
cte_attr :infCte, :as => ConhecimentoTransporte
end
私がやりたいのはto_cte
、サブクラス オブジェクトを呼び出したら、属性の値を返すようにすることですが、それぞれに関数を適用した後でのみです。最初にそれらの値を正規化したいと思います (文字列からアクセントを削除する、引用符をエスケープする、特殊文字などを削除する)。この場合、どうすればよいでしょうか?