carvilと同じように、私はモデルにcreated_atのdatetimeを持っていますが、 "equals"述語でcreated_atとdate( '2012-09-26'のようなもの)を比較したかったのです。Ruby on Rails Ransack日時検索
だから私は、キャストの属性を追加し、古いのcreated_at/update_at/deleted_atを離陸するために(私のモデルに追加:私は、クエリ(created_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
をしかし2012-03- 24' )私はこのエラーを持っている:。
NoMethodError (undefined method `name' for "date(items.created_at)":Arel::Nodes::SqlLiteral):
は驚くべきことに、それだけでこのエラーが発生する 『等しい』と 『未満』 『より大きい』と連携
私はすべての私のためにこのすべてを作りました。モ(残りの40%はこのエラーが発生します)。コンソールで
:
irb(main):232:0> Item.search(:created_at_eq => Date.today.to_s).result
(Object doesn't support #inspect)
ご協力いただきありがとうござい
EDIT: 項目(::deleted_at偽)
私が作るdefault_scopeを持っています
しかし、私はなぜそれがエラーが発生するのか分からない
これはまだ解決されていないように見えます:https://github.com/activerecord-hackery/ransack/issues/34 。問題を理解したことはありますか? –