编辑:不是"Why doesn't this query work on Heroku?"的副本。搜索不涉及字符串,仅涉及日期查询。
Rails App在搜索时不会在本地抛出任何错误,但每次搜索prod时都会抛出错误。这曾经很好。我正在针对SQLite3进行开发,并且最近没有改变任何直接与搜索栏交互的内容。我回到了一些非常古老的树枝上以确保;它还是坏了。我在我的gemfile中指定的1.3.9上运行SQLite3。
以下是我的模型中的搜索def:
def self.search(search)
where("startDay LIKE ?", "%#{search}%")
end
观点:
<%= form_tag(weeks_path, :method => "get", id: "search-form") do %>
<h4>Search for weeks by start date </h4>
<%= text_field_tag :search, params[:search], placeholder: "Search Weeks", value: Date.today.beginning_of_week(:sunday) - 7 %>
<%= submit_tag "Search", :name => nil %>
<% end %>
我应该包括哪些其他内容可能有助于解决问题?
答案 0 :(得分:1)
主要的不是搜索字符串或日期。问题是您的本地数据库与生产数据库不同。 PostgreSQL不能直接在datetime字段上应用LIKE
操作,应该在使用字符串操作之前将其显式转换为字符串。如果不在开发环境中切换到生产类型数据库,您将来会继续获得类似的错误。
在postgresql中,此查询应编写如下:
where("startDay::text LIKE ?", "%#{search}%")
答案 1 :(得分:0)
对于将来看这个的人。 我切换到postgreSQL,但因为我的应用程序完成了99%,我决定不再试图通过我的文件并更改我的所有语法而放弃Heroku,继续使用sqlite3而是托管我自己的生产服务器。 / p>