views:

90

answers:

2

How to do that with ActiveRecord? My code:

p = Product.create
l = Label.create
p.labels.add << l

But I get l.parent == nil

  create_table "labels", :force => true do |t|
    t.integer  "product_id"
  end
+3  A: 

Some code from you would be appropriate, since what you're asking should be working automatically.

class Parent < ActiveRecord::Base
  has_many :children
end

class Child < ActiveRecord::Base
  belongs_to :parent
end

If your code doesn't resemble that, then please post a more specific question.

Edit: Does your Product model have any validations in it? They aren't going to pass your code above, and you aren't checking the return value from create, so you'll never know.

jdl
My code is exactly like that. It's Rails 2.3.4
Cheng
See my edit above about validations. Posting your model code would help, if that isn't it.
jdl
Not sure why. I changed something and change them back. But everything now working. Thank you.
Cheng
+3  A: 

You could use acts_as_tree for this: http://github.com/rails/acts_as_tree

Ryan Bigg
Shouldn't that be done some lower-level? No matter it's a tree or a list, child.parent_id should be set when a parent include it?
Cheng