Accept search[created_at] and search[updated_at] params in all controllers.

This commit is contained in:
evazion
2017-12-17 17:31:07 -06:00
parent 0ca726802f
commit 2a876991da
3 changed files with 9 additions and 2 deletions

View File

@@ -9,7 +9,7 @@ class ApplicationRecord < ActiveRecord::Base
column = column_for_attribute(attribute)
qualified_column = "#{table_name}.#{column.name}"
parsed_range = Tag.parse_helper(range, :integer)
parsed_range = Tag.parse_helper(range, column.type)
PostQueryBuilder.new(nil).add_range_relation(parsed_range, qualified_column, self)
end
@@ -19,6 +19,8 @@ class ApplicationRecord < ActiveRecord::Base
q = all
q = q.attribute_matches(:id, params[:id])
q = q.attribute_matches(:created_at, params[:created_at]) if attribute_names.include?("created_at")
q = q.attribute_matches(:updated_at, params[:updated_at]) if attribute_names.include?("updated_at")
q
end
end

View File

@@ -275,7 +275,7 @@ class Tag < ApplicationRecord
when :float
object.to_f
when :date
when :date, :datetime
begin
Time.zone.parse(object)
rescue Exception

View File

@@ -15,5 +15,10 @@ class ApplicationRecordTest < ActiveSupport::TestCase
assert_equal(@tags.reverse, Tag.search(id: "#{@tags[0].id}..#{@tags[2].id}"))
assert_equal(@tags.reverse, Tag.search(id: @tags.map(&:id).join(",")))
end
should "support the created_at and updated_at params" do
assert_equal(@tags.reverse, Tag.search(created_at: ">=#{@tags.first.created_at}"))
assert_equal(@tags.reverse, Tag.search(updated_at: ">=#{@tags.first.updated_at}"))
end
end
end