У меня есть этот код: РельсыРубин на Rails: ActiveRecord :: StatementInvalid не может бросить ActiveRecord :: StatementInvalid
def newfood
memberproduct = MemberProduct.new
memberproduct.product_id = Product.where(:barcode_number => params[:barcode_number]).id
memberproduct.expiration_date = params[:expiration_date]
memberproduct.member_id = current_member.id
memberproduct.save
end
мне нужен идентификатор продукта. 3-я строка неверна.
У меня есть MemberProduct
стола с product_id
поля, в expiration_date
поле и member_id
поля (current_member происходит от devise
) У меня есть Product
таблицы с полем barcode_number
и name
поля.
Я получаю эту ошибку:
ActiveRecord::StatementInvalid in FoodController#newfood TypeError: can't cast ActiveRecord::Relation::ActiveRecord_Relation_Product to string: INSERT INTO "member_products" ("created_at", "expiration_date", "member_id", "product_id", "updated_at") VALUES (?, ?, ?, ?, ?)
Что я делаю неправильно?
Спасибо, а что, если мне нужно получить идентификатор этого продукта? Будет обновлен вопрос. – hansottowirtz
Я не уверен, что понимаю - у вас есть продукт. Если вам действительно нужен идентификатор модели, вы можете делать то, что вы делаете с 'current_member.id', и добавлять' .id' после '.first'. – janfoeh
Это, наверное, глупая ошибка, но у меня есть этот код прямо сейчас: «продукт = Product.where (: barcode_number => Params [: barcode_number]). Первый memberproduct = MemberProduct.new memberproduct.product_id = product.id memberproduct.expiration_date = params [: expiration_date] memberproduct.member_id = current_member.id memberproduct.save ' И это говорит о неопределенном методе 'id' для nil: NilClass Но спасибо уже! – hansottowirtz