簡體   English   中英

Ransack搜索日期為字符串

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM