Используя Rails 3 и ActiveModel, я не могу использовать self.синтаксис для получения значения атрибута внутри объекта на основе ActiveModel.
В следующем коде в методе сохранения self.first_name оценивается как ноль, где @attributes [: first_name] оценивается как «Имя» (значениепередается из контроллера при инициализации объекта).
В ActiveRecord это похоже на работу, но при построении того же класса в ActiveModel это не так.Как вы относитесь к полю, используя методы доступа в классе на основе ActiveModel?
class Card
include ActiveModel::Validations
extend ActiveModel::Naming
include ActiveModel::Conversion
include ActiveModel::Serialization
include ActiveModel::Serializers::Xml
validates_presence_of :first_name
def initialize(attributes = {})
@attributes = attributes
end
#DWT TODO we need to make sure that the attributes initialize the accessors properyl, and in the same way they would if this was ActiveRecord
attr_accessor :attributes, :first_name
def read_attribute_for_validation(key)
@attributes[key]
end
#save to the web service
def save
Rails.logger.info "self vs attribute:\n\t#{self.first_name}\t#{@attributes["first_name"]}"
end
...
end