My first guess would be that it has to do with the definitions for the following methods:
create_tree_node tree_node.create_definition What happens if, after the IRB code you pasted in, you call c.save Course.all (if that doesn't work, does the following work?) c.interaction_outline.save c.interaction_outline.tree_node.save Course.all On Tue, Jul 19, 2011 at 10:17 AM, Matt Garland <li...@ruby-forum.com> wrote: > I have a Course model: > > class Course < ActiveRecord::Base > > belongs_to :interaction_outline, :class_name => "Tree", :foreign_key > => "interaction_outline_id" > belongs_to :token_outline, :class_name => "Tree", :foreign_key => > "token_outline_id" > > after_save :make_outlines > > def make_outlines > self.create_interaction_outline :name=> > self.name+"_interaction_outline" > self.create_token_outline :name=> self.name+"_token_outline" > end > > end > > After it is saved, the course creates some default outlines/trees. These > in turn create some defaults: > > class Tree < ActiveRecord::Base > > has_many :edit_lists, :dependent=> :destroy > has_many :definitions, :dependent=> :destroy > has_many :courses > belongs_to :tree_node #the top node > > validates_presence_of :name > validates_uniqueness_of :name > > after_save :make_top > > def make_top > self.create_tree_node > self.tree_node.create_definition :name=>"top", :content=> > "<application></application>" > end > > end > > The app is basically an outline editor that swaps in xml values for > outline items. > > When I create a course in the console, all the defaults are created and > associations set: > > >> c=Course.create :name=>"foo" > => #<Course id: 5, name: "foo", interaction_outline_id: 14, > token_outline_id: 15, created_at: "2011-07-19 17:11:18", updated_at: > "2011-07-19 17:11:18"> > >> c > => #<Course id: 5, name: "foo", interaction_outline_id: 14, > token_outline_id: 15, created_at: "2011-07-19 17:11:18", updated_at: > "2011-07-19 17:11:18"> > >> c.interaction_outline > => #<Tree id: 14, name: "foo_interaction_outline", tree_node_id: 14, > created_at: "2011-07-19 17:11:18", updated_at: "2011-07-19 17:11:18"> > >> c.interaction_outline.tree_node > => #<TreeNode id: 14, tree_id: nil, definition_id: 10, ancestry: nil, > position: nil, created_at: "2011-07-19 17:11:18", updated_at: > "2011-07-19 17:11:18"> > >> c.interaction_outline.tree_node.definition > => #<Definition id: 10, name: "top", content: > "<application></application>", tree_id: 14, created_at: "2011-07-19 > 17:11:18", updated_at: "2011-07-19 17:11:18"> > > HOWEVER, they are not actually saved: > > >> Course.all > => [#<Course id: 5, name: "foo", interaction_outline_id: nil, > token_outline_id: nil, created_at: "2011-07-19 17:11:18", updated_at: > "2011-07-19 17:11:18">] > What? > > This is the value returned by my controllers, too, with no foreign keys > and thus no includes possible. Why? > > I have confirmed that all my composed objects are valid. > > Thanks! > > Matt > > -- > Posted via http://www.ruby-forum.com/. > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To post to this group, send email to rubyonrails-talk@googlegroups.com. > To unsubscribe from this group, send email to > rubyonrails-talk+unsubscr...@googlegroups.com. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en. > > -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.