2016-01-28 99 views
0

我有我的搜索字段的名稱,電子郵件和created_at。我添加了名稱和電子郵件字段的搜索。對於日期字段,我添加了提示文本「日期應該採用MM-DD-YYYY格式」,我希望用戶只能以此格式輸入日期。如果日期以該格式輸入,那麼我想顯示該日期的所有記錄。我的搜索結果以字符串格式顯示,例如「12-22-2015」。我想要顯示其created_at字段的所有日期。對於姓名和電子郵件,我的查詢如下:@messages = Message.includes(:user).select('messages.*, users.name').where("users.name ilike ? OR messages.to ilike ? " ,"%#{@query}%", "%#{@query}%").paginate(:page => params[:page], :per_page => 5)。還需要修改上面對created_at字段的查詢。在軌道上的紅寶石日期字段搜索

回答

0

請嘗試以下...

@messages = Message.includes(:user).select('messages.*, users.name').where("users.name ilike ? OR messages.to ilike ? OR messages.created_at like ? " ,"%#{@query}%", "%#{@query}%", Date.parse("%#{@query}%", '%MM-%DD-%YYYY')).paginate(:page => params[:page], :per_page => 5) 
+0

ILIKE,喜歡不帶日期領域的工作。它提供了錯誤:ActiveRecord :: StatementInvalid:PG :: UndefinedFunction:ERROR:操作符不存在:timestamp without time zone ~~ *未知 – Neha

+0

錯誤即將到來:ActiveRecord :: StatementInvalid:PG :: UndefinedFunction:ERROR:operator不存在:沒有時區的時間戳~~ *未知 LINE 1:... es.to ilike'%06-01-2015%'OR messages.created_at ilike'201 ... – Neha

0

嘗試下面的查詢,顯示相同的日期記錄

@messages = Message.includes(:user).select('messages.*, users.name').where("users.name ilike ? OR messages.to ilike ? OR date(messages.created_at) = ? " ,"%#{@query}%", "%#{@query}%", "#{@query.to_date}").paginate(:page => params[:page], :per_page => 5) 
+0

My @query is as:「 2015年7月10日「及其MM-DD-YYYY格式。我試過你的查詢,但我得到空白的結果。 – Neha

+0

這個查詢語法對我來說絕對很好用。實際上「2015年10月7日」是一種字符串類型,並且是在datetime類型中創建的,沒有轉換查詢將不起作用。 – Anna88

+0

現在工作。謝謝 :) – Neha