Sha256: 15fe601d922ac3c9c626c36a3c470a9878afc005dc4540148fefc8c3a946ec57
Contents?: true
Size: 1.06 KB
Versions: 1
Compression:
Stored size: 1.06 KB
Contents
module Helena class Answer include Helena::Concerns::ApplicationModel field :code, type: String field :ip_address, type: String field :created_at, type: DateTime, default: -> { DateTime.now } embedded_in :session, inverse_of: :answers validates :code, :ip_address, presence: true validates :code, uniqueness: true def self.build_generic(code, value, ip_address) value = cast_value(value) answer_class_for(value).new(code: code, value: value, ip_address: ip_address) end def self.answer_class_for(value) case value when Fixnum Helena::IntegerAnswer when TrueClass Helena::BooleanAnswer when FalseClass Helena::BooleanAnswer when String Helena::StringAnswer end end def self.cast_value(value) if value == 'true' true elsif value == 'false' false elsif integer?(value) value.to_i else value.to_s end end def self.integer?(str) Integer(str) rescue false end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
helena-0.3.3 | app/models/helena/answer.rb |