Ruby on rails 如何根据枚举状态查询activerecord?
我正在尝试根据列状态对模型产品执行搜索/筛选操作。列状态为整数类型。后来为了可读性,我在status列上使用了enum数据类型,如下所示Ruby on rails 如何根据枚举状态查询activerecord?,ruby-on-rails,Ruby On Rails,我正在尝试根据列状态对模型产品执行搜索/筛选操作。列状态为整数类型。后来为了可读性,我在status列上使用了enum数据类型,如下所示 class Production < ApplicationRecord enum status:{ Preproduction:1, Postproduction: 2, Completed:3 } end 看法 现在,只有在文本字段中输入整型值(如1、2或3),我才能正确查询记录。当我进入我指定的预生产状态
class Production < ApplicationRecord
enum status:{
Preproduction:1,
Postproduction: 2,
Completed:3
}
end
看法
现在,只有在文本字段中输入整型值(如1、2或3),我才能正确查询记录。当我进入我指定的预生产状态时,我没有得到结果。我得到一张空白页。我怎样才能解决这个问题?如何才能成功地接受字符串和查询?您可以这样做
@productions = Production.where('productions.status like ?', "%#{Production.statuses[params[:filter]]}%")
枚举有一个多重类方法,所以生产中的枚举状态有一个哈希
Production.status,看起来像您的状态哈希,但符号已更改为字符串
<%= form_tag [:filter, :productions], :method => 'get' do %>
<p>
<%= text_field_tag :filter, params[:filter] %>
<%= submit_tag "Filter", :status => nil %>
</p>
<% end %>
@productions = Production.where('productions.status like ?', "%#{Production.statuses[params[:filter]]}%")