Wie carvil habe ich in meinem Modell eine Datetime für created_at, obwohl ich das "equals" Prädikat wollte, um die created_at und ein Datum (wie '2012-09-26') zu vergleichen.Ruby on Rails Racks Date-to-Date Suche
So habe ich in meinem Modell (in der Reihenfolge gegossen Attribute hinzufügen und die alte created_at/update_at/deleted_at ausziehen:
ransacker :created_at do
Arel::Nodes::SqlLiteral.new("date(items.created_at)")
end
ransacker :updated_at do
Arel::Nodes::SqlLiteral.new("date(items.updated_at)")
end
ransacker :deleted_at do
Arel::Nodes::SqlLiteral.new("date(items.deleted_at)")
end
# Hide some attributes for advanced search
UNRANSACKABLE_ATTRIBUTES = ["created_at", "updated_at", "deleted_at"]
def self.ransackable_attributes auth_object = nil
(column_names - UNRANSACKABLE_ATTRIBUTES) + _ransackers.keys
end
Aber wenn ich die Abfrage (created_at bestätigen gleich zu ‚2012-03- 24') ich habe diesen Fehler:..
NoMethodError (undefined method `name' for "date(items.created_at)":Arel::Nodes::SqlLiteral):
Überraschenderweise funktioniert es mit ‚größer als‘ und ‚kleiner als‘ nur ‚gleich‘ dieser Fehler tritt auf
ich dies alles gemacht für alle meine mo dels und 60% funktioniert (die verbleibenden 40% tritt dieser Fehler).
in der Konsole:
irb(main):232:0> Item.search(:created_at_eq => Date.today.to_s).result
(Object doesn't support #inspect)
Danke für Ihre Hilfe
EDIT:
Ich habe eine default_scope, die macht: Gegenstand (: deleted_at false)
Aber ich weiß nicht, warum es den Fehler auftritt
Es sieht wie folgt aus wurde noch nicht gelöst: https://github.com/activerecord-hackery/ransack/issues/34 . Hast du jemals dein Problem herausgefunden? –