Come il carvil ho nel mio modello un datetime per created_at sebbene volessi che il predicato "uguali" confronti il created_at e una data (come '2012-09-26').Ruby on Railsack Data ricerca data/ora fino a data
così ho aggiunto nel mio modello (al fine di aggiungere attributi colato e togliere il vecchio created_at/update_at/deleted_at:
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
Ma quando confermo la query (created_at è uguale a '2012-03- 24') ho questo errore:..
NoMethodError (undefined method `name' for "date(items.created_at)":Arel::Nodes::SqlLiteral):
Sorprendentemente, funziona con 'maggiore' e 'minore di' Solo 'è uguale a' si verifica questo errore
ho fatto tutto questo per tutta la mia momento dels e il 60% funziona (il restante 40% si verifica questo errore).
Nella console:
irb(main):232:0> Item.search(:created_at_eq => Date.today.to_s).result
(Object doesn't support #inspect)
Grazie per il vostro aiuto
EDIT:
Ho un default_scope che fa: Prodotto (: deleted_at false)
Ma non so perché si verifica l'errore
Sembra che questo non è stato ancora risolto: https://github.com/activerecord-hackery/ransack/issues/34 . Hai mai capito il tuo problema? –