module PunctualDateSelect::Model::ClassMethods
Public Instance Methods
punctual_date_column(*args)
click to toggle source
# File lib/punctual_date_select/model.rb, line 37 def punctual_date_column(*args) args.each do |column_name| validation_method = :"validate_#{column_name}_is_casted" validate validation_method define_method validation_method do errors.add(column_name, :invalid) if send(column_name) && !send(column_name).kind_of?(Date) && !send(column_name).kind_of?(Time) end define_method "#{column_name}=" do |value| if value.kind_of?(Hash) && !value.kind_of?(PunctualDateSelect::DateHash) && (value.keys.map(&:to_sym) & %i[year month day]).any? class << value include PunctualDateSelect::DateHash end end self[column_name] = (value.kind_of?(Hash) && value.values.any?{|t| t.blank?}) ? nil : value end private validation_method end end