[英]Ransack Search Date as a String
我在我的應用程序中使用ransack gem搜索機制。 我面臨的問題是,在我的模型中,我意外地將“日期”列創建為字符串字段,因為日期搜索不起作用,並且我無法根據日期進行比較。 由於列的數據類型是字符串,因此ransack不會帶來適當的結果。
@q = MyModel.order(id: :desc).ransack(params[:q])
@records = @q.result(distinct: true)
我在該表中有大量實時數據,我不想通過編寫遷移來冒險。 任何幫助將不勝感激
有一個簡單的hack可以使用它並將字符串轉換為數據庫級別的數據。 您的模型需要添加以下方法。
ransacker :name_of_your_column_to_d do
Arel.sql("cda")
end
然后在您的控制器中執行以下更改。
# You can use DESC id if you want to change order.
@q = YourModel.ransack({s: "id DESC"}.merge(params[:q] || {}))
@q.result(distinct: true).select("*, to_date(\"your_model_table_name\".\"your_date_column_name\", 'MM/DD/YYYY') as cda, your_model_table_name.id")
如果您需要進一步的幫助,請告訴我。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.