Module: Elasticsearch::Persistence::Model::Rails
- Defined in:
- lib/elasticsearch/persistence/model/rails.rb
Overview
Make the ‘Persistence::Model` models compatible with Ruby On Rails applications
Class Method Summary collapse
Class Method Details
.included(base) ⇒ Object
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 |
# File 'lib/elasticsearch/persistence/model/rails.rb', line 8 def self.included(base) base.class_eval do # Decorates the passed in `attributes` so they extract the date & time values from Rails forms # # @example Correctly combine the date and time to a datetime string # # params = { "published_on(1i)"=>"2014", # "published_on(2i)"=>"1", # "published_on(3i)"=>"1", # "published_on(4i)"=>"12", # "published_on(5i)"=>"00" # } # MyRailsModel.new(params).published_on.iso8601 # # => "2014-01-01T12:00:00+00:00" # def initialize(attributes={}) day = attributes.select { |p| p =~ /\([1-3]/ }.reduce({}) { |sum, item| (sum[item.first.gsub(/\(.+\)/, '')] ||= '' )<< item.last+'-'; sum } time = attributes.select { |p| p =~ /\([4-6]/ }.reduce({}) { |sum, item| (sum[item.first.gsub(/\(.+\)/, '')] ||= '' )<< item.last+':'; sum } unless day.empty? attributes.update day.reduce({}) { |sum, item| sum[item.first] = item.last; sum[item.first] += ' ' + time[item.first] unless time.empty?; sum } end super(attributes) end end end |