Rails 4 как параметризовать enum

Как параметризовать enum? Мне нужно использовать перечисление для параметра, который имеет целочисленное значение в качестве типа данных.

модели /product.rb

class Product < ActiveRecord::Base
  enum category_id: [ :hotel, :travel, :restaurant ]
end

просмотров / продукты / боковой панели

<div class="col-md-3">
  <ul class="list-group">
    <li class="list-group-item">
      <span class="badge"><%= Product.where(user_id: current_user).count %></span>
      <a href="<%= provider_root_path %>">All</a>
    </li>
    <% @categories.each do |category| %>
    <li class="list-group-item">
      <span class="badge"><%= Product.where(category_id: category[1]).count %></span>
      <a href="<%= provider_product_category_path(category[0].parameterize) %>"><%= category[0].titleize %></a>
    </li>
    <% end %>
  </ul>
</div>

эта строка работает именно то, что я хочу:

<%= product_category_path(category[0].parameterize) %>

он производит:

'/product/category/travel'

и вот моя проблема:

Контроллеры /product_controller.rb

def category
  @products = Product.where(category_id: params[:category_id]).order("created_at DESC")
  @categories = @products.category_ids
end

Мне нужно изменить params[:category_id] целое число У меня есть попытка params[:category_id].to_i но он всегда возвращает 0.

Кто-нибудь может помочь? заранее спасибо:)

1 ответ

Решение

Чтобы продукт был успешным, вам необходимо:

Product.where(category_id: params[:category_id].to_sym).order(anything_you_want)

Чтобы получить строго целое число, вам необходимо:

Product.category_ids[params[:category_id].to_sym]
Другие вопросы по тегам