Получение неопределенного метода erorr rails - PullRequest
0 голосов
/ 07 октября 2018

Я хочу создать список «Активный пользователь» и «Неактивный пользователь».

И у меня есть модель пользователя и модель ваучера (имеет количество: целое число).

В моих маршрутах.rb

      resources :users do
        resources :vouchers
      end

  get 'active' => 'home#active', as: :active
  get 'unactive' => 'home#unactive', as: :unactive

В моем home_controller.rb

  def active
    @users = User.all
    @vouchers = Voucher.all
  end

  def unactive
    @users = User.all
    @vouchers = Voucher.all
  end

В active.html.erb

<% @users.each do |user| %>
    <% if user.vouchers.quantity >= 1 %>
        <%= user.name %> <br>
    <% end %>
<% end %>

В unactive.html.erb

<% @users.each do |user| %>
    <% if user.vouchers.quantity == 0 %>
        <%= user.name %> <br>
    <% end %>
<% end %>

Но я получил эту ошибку: " неопределенный метод" количество "для "

Как я могу получить это количество?Я хочу показать пользователю, у которого voucher.quantity == 0 в моем неактивном списке.

Спасибо!

Ответы [ 2 ]

0 голосов
/ 07 октября 2018

Я получил решение.Спасибо:)

  def active
    @users = User.joins(:vouchers).where('vouchers.quantity > 1').distinct
  end
0 голосов
/ 07 октября 2018

user.vouchers - это список объектов Vaucher, для которого нет смысла вызывать quantity, это свойство каждого объекта, что вы ожидаете от него вернуть?

Если вы не хотитепосчитайте, сколько ваучеров у пользователя, затем используйте метод count вместо user.vouches.count.

. Или вы можете получить количество первого ваучера с помощью user.vouchers.first.quantity.

Или, может быть, вы хотите проверить, все ли ваучеры имеют количество 0?user.vouchers.all?{|voucher| voucher.quantity == 0}

Непонятно, что вы пытаетесь сделать с этим, если условие.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...