Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Model Rails 4 to_xml问题,访问器在模型中被覆盖_Model_Ruby On Rails 4_Ruby 2.0_Export To Xml - Fatal编程技术网

Model Rails 4 to_xml问题,访问器在模型中被覆盖

Model Rails 4 to_xml问题,访问器在模型中被覆盖,model,ruby-on-rails-4,ruby-2.0,export-to-xml,Model,Ruby On Rails 4,Ruby 2.0,Export To Xml,我在覆盖模型中的访问器以及稍后在模型上使用to_xml方法时遇到问题。问题是,to_xml似乎使用默认的getter方法,而不是使用read_属性 我的模型: class Announcement < ActiveRecord::Base ... def created_at date = self[:created_at] "#{german_date(date)} #{german_time(date)} #{I18n.t(:clock)}" end

我在覆盖模型中的访问器以及稍后在模型上使用
to_xml
方法时遇到问题。问题是,
to_xml
似乎使用默认的getter方法,而不是使用
read_属性

我的模型:

class Announcement < ActiveRecord::Base
  ...

  def created_at
    date = self[:created_at]
    "#{german_date(date)} #{german_time(date)} #{I18n.t(:clock)}"
  end

  ...
end
问题是:当我运行
到_xml
时,我遇到了以下问题:

NoMethodError: undefined method `xmlschema' for "15.03.2009 18:17 Uhr":String

显然,
to_xml
使用的是我的自定义getter,而不是
read_属性(:created_at)
,这将给出正确的值。我很惊讶没有在其他地方发现这个问题,但是有解决这个问题的方法吗

有一种方法可以使用选项和带有
to_xml

announcment.to_xml(except: :created_at, procs: -> (options, record) {
  options[:builder].tag!("created-at", record.read_attribute(:created_at))
})

但这并不漂亮。我只想在视图中使用装饰器,而不使用模型属性方法,Draper在Rails 4中工作得非常好。

我接受它是因为Draper的提示。它似乎是一颗伟大的宝石!不过,第一个“解决方案”过于繁琐。
announcment.to_xml(except: :created_at, procs: -> (options, record) {
  options[:builder].tag!("created-at", record.read_attribute(:created_at))
})