如果我尝试从模型SubQuantity
获取某些东西,我的rails控制台中会出现未定义的方法错误
我有一个名为Subquantity
的模型,现在我的模型中有
SubQuantity.rb
belongs_to :product
belongs_to :cart
end
我在SubQuantity
模型中定义了一个名为sub_quantity
的整数。在我的代码中,我试图做这样的事情
subq = SubQuantity.where(product_id:@product.id, cart_id:current_user.cart.id)
作为回报,我得到了这个,
[#<SubQuantity:0x007fbbdc046d08
id: 4,
sub_quantity: 1,
product_id: 4,
cart_id: 6,
created_at: Sun, 22 May 2016 11:03:55 UTC +00:00,
updated_at: Sun, 22 May 2016 11:03:55 UTC +00:00>]
每当我尝试做这样的事情时,
subq.sub_quantity
我收到这个错误,
NoMethodError: undefined method sub_quantity for
#<SubQuantity::ActiveRecord_Relation:0x007fbbdc04d838>
。
这不仅仅是sub_quantity,即使使用subq.id,我也会在subq中得到确切的错误。
这有什么不对?
答案 0 :(得分:1)
每当您使用 where
方法时,即使结果是一个对象,它也会返回一个数组。要解决您的问题,您必须调用.first
,从数组中提取第一个结果(在这种情况下是唯一的结果)。例如:
subq = SubQuantity.where(product_id: @product.id, cart_id: current_user.cart.id)
subq.first.sub_quantity
另一种方式,如果没有first
则使用find_by
。它的工作方式与where
方法类似,但只返回一个结果,即它可以找到的第一个结果。
subq = SubQuantity.find_by(product_id: @product.id, cart_id: current_user.cart.id)
subq.sub_quantity