我想对模型实例中每个属性的值进行编码。 Rails 3是否支持这样的东西?例如
class Book
attr_accessor :title, :author, :description
end
默认情况下,title,author和description的属性值编码为UTF-8。相反,我想更新所有属性值并将它们编码为ISO。在某些情况下,模型可能具有50多个属性,并且单独调用每个属性没有意义。最好一次更新所有属性。
这是我尝试做的一些伪代码。在Rails 3中是否可以这样?
Book.find(1).update_all_attributes(&:encode("ISO-8859-1"))
更新我知道上面的代码行会失败。它只是伪代码来帮助传达我想要实现的目标。
答案 0 :(得分:2)
class Book < ActiveRecord::Base
before_save :recode_attribs
private
def recode_attribs
attributes.each do |name, value|
next unless value.respond_to?(:encode)
attributes[name] = value.encode('ISO-8859-1')
end
end
end