2016-05-22 8 views
0
私はモデルから何かを取得しようとする場合、私は私のレールコンソールで未定義のメソッドのエラーを取得しています

SubQuantity
私はSubquantityというモデル、今の私のモデルでは、私は
SubQuantity.rb
belongs_to :product
を持っているを持っています belongs_to :cart
end
と定義されている整数は、sub_quantityと呼ばれるSubQuantityというモデルで定義されています。私のコードでは、私はこの、
[#<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 = SubQuantity.where(product_id:@product.id, cart_id:current_user.cart.id)
ような何かをしようとしていますこのようなことをするには、
subq.sub_quantity
このエラーが発生しました。
NoMethodError: undefined method sub_quantity for
#<SubQuantity::ActiveRecord_Relation:0x007fbbdc04d838>です。
これはsub_quantityだけでなく、subq.idでもすべての事柄について正確なエラーが発生しています。 ここで何が間違っていますか?アクティブなレコード、未定義のメソッド

答えて

1

あなたはwhereメソッドを使用するたびに、それは結果がオブジェクトである場合でも、配列を返します。問題を解決するには、.firstに電話して、配列から最初の結果を抽出する必要があります(この場合は唯一です)。例:firstなし

subq = SubQuantity.where(product_id: @product.id, cart_id: current_user.cart.id) 
subq.first.sub_quantity 

もう一つの方法は、find_byを使用することです。 whereメソッドと同じように動作しますが、最初に見つかった結果が1つだけ返されます。

subq = SubQuantity.find_by(product_id: @product.id, cart_id: current_user.cart.id) 
subq.sub_quantity 
関連する問題