Ruby on rails 如何根据枚举状态查询activerecord?

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),我才能正确查询记录。当我进入我指定的预生产状态

我正在尝试根据列状态对模型产品执行搜索/筛选操作。列状态为整数类型。后来为了可读性,我在status列上使用了enum数据类型,如下所示

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]]}%")