我正在尝试根据列状态对模型生产实施搜索/过滤操作。列final ObjectMapper mapper = jacksonBuilder().build();
SimpleModule module = new SimpleModule();
module.addDeserializer(Person.class, new PersonDeserializer());
是整数类型。为了便于阅读,我在status
列上使用了enum数据类型,如下所示。
status
然后我开始研究搜索/过滤功能,根据用户提供的状态获取记录。
productions_controller
class Production < ApplicationRecord
enum status:{
Preproduction:1,
Postproduction: 2,
Completed:3
}
end
查看
def filter
if params[:filter]
@productions = Production.where('productions.status like ?', "%#{params[:filter]}%")
else
@productions = Production.all
end
end
现在,只有在文本字段中输入<%= form_tag [:filter, :productions], :method => 'get' do %>
<p>
<%= text_field_tag :filter, params[:filter] %>
<%= submit_tag "Filter", :status => nil %>
</p>
<% end %>
1
或2
等整数值时,我才能正确查询记录。当我像我指定的那样输入像3
这样的状态时,我没有得到结果。我得到一个空白页面。我怎样才能解决这个问题 ?如何让它成功接受字符串和查询?
答案 0 :(得分:1)
你可以这样做......
@productions = Production.where('productions.status like ?', "%#{Production.statuses[params[:filter]]}%")
枚举有一个复数类方法,因此生产中的枚举status
有一个哈希值
Production.statuses
看起来像您的状态哈希,但符号已更改为字符串。