KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I've upgraded to Rails 2.3.3 (from 2.1.x) and I'm trying to figure out the accepts_nested_attributes_for method. I can use the method to update existing nested objects, but I can't use it to create new nested objects. Given the contrived example: class Product < ActiveRecord::Base has_many :notes accepts_nested_attributes_for :notes end class Note < ActiveRecord::Base belongs_to :product validates_presence_of :product_id, :body end If I try to create a new Product , with a nested Note , as follows: params = {:name => 'Test', :notes_attributes => {'0' => {'body' => 'Body'}}} p = Product.new(params) p.save! It fails validations with the message: ActiveRecord::RecordInvalid: Validation failed: Notes product can't be blank I understand why this is happening -- it's because of the validates_presence_of :product_id on the Note class, and because at the time of saving the new record, the Product object doesn't have an id . However, I don't want to remove this validation; I think it would be incorrect to remove it. I could also solve the problem by manually creating the Product first, and then adding the Note , but that defeats the simplicity of accepts_nested_attributes_for . Is there a standard Rails way of creating nested objects on new records?
Tags (comma-separated)
Save Edits
Cancel