我要创建“活动用户”和“非活动用户”的列表。
我有用户模型和凭证模型(具有数量:整数)。
在我的路线上。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 %>
但是我遇到了这个错误:“ 未定义方法'quantity'”
如何获得此数量?
我想向用户显示在我的无效列表中有voucher.quantity == 0
的用户。
谢谢!
答案 0 :(得分:1)
user.vouchers
是Vaucher对象的列表,对其调用quantity
毫无意义,它是每个对象的属性,您希望它返回什么?
如果您不希望计算用户拥有多少张凭单,请使用count
方法代替user.vouches.count
。
或者您可能想使用user.vouchers.first.quantity
获取第一张凭证的数量。
或者您可能要检查所有凭证是否均具有数量0? user.vouchers.all?{|voucher| voucher.quantity == 0}
如果条件尚不清楚,您打算怎么做。
答案 1 :(得分:0)
我找到了解决方案。谢谢:)
def active
@users = User.joins(:vouchers).where('vouchers.quantity > 1').distinct
end