module Elasticsearch::Persistence::Model::Rails
Make the ‘Persistence::Model` models compatible with Ruby On Rails
applications
Public Class Methods
included(base)
click to toggle source
# 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
new(attributes={})
click to toggle source
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"
Calls superclass method
# File lib/elasticsearch/persistence/model/rails.rb, line 24 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