2014-12-23 4 views
0

난 당신이 이런 식으로 뭔가를 할 수 이해 :관계가있는 활성 레코드 개체를 새로 만드시겠습니까?

# Payment belongs_to Product 
# Product has_many Payments 
product_id = Product.find_by_name("widget").id 
Payment.new(product_id: product_id) 

이 작동하지만, 이런 식으로 뭔가를 할 수 있습니까?

Payment.new(product: {name: "widget}) 

이렇게하면 오류가 발생하지만 구문이 약간 변경된 것일 수 있습니다. 어떤 도움이라도 대단히 감사하겠습니다.

답변

2

당신은 고려, 잘못된 방향으로 가고있다이

product = Product.where(name: "widget").first 
product.payments.new # payment will have correct product_id automatically 
+1

나는 OP 예뻐 코드 뒤에있는 경우, 그는 또한 레일 버전에 따라'통합 find_by' 또는'find_by_name' 고려해야 추가 할 것 , 'where (conditions) .first'보다는. – Humza

+0

제안을위한 @Humza (+1). 나는 그 질문에 착수했다. – newUserNameHere

+0

이것이 더 간단하다는 것은 잘 모르겠지만 흥미로운 접근 방법입니다. 응답 해 주셔서 감사합니다. – newUserNameHere

관련 문제