has_many and the << operator ?

In the AWDWR book it mentions that the << operator (or method?) just
adds the child model the child collection within the parent model.

For some reason when I am using it it doesn't work as expected.

Here is what I have:
class Member
   has_many :tasks

class Task
   belongs_to :member

describe Member, " linkage to task" do
  before(:each) do
    @member = Member.new(valid_member_params)

  def valid_member_params
     :first_name => "Joe",

  it "should be added through a member" do
    task = Task.new(:content => "Do something")
    @member.tasks << task

    @ member.should have(1).tasks
    @ member.tasks.size == 1
    @ member.tasks[0].id > 0 #FAILS here as it never got inserted


The log is rather odd as it doesn't show any hits to the database:
Spec::Rails::DSL::HelperEvalContextController: missing default helper
path spec/rails/dsl/helper_eval_context_helper
Spec::Rails::DSL::ViewExampleController: missing default helper path
  e[4;36;1mSQL (0.000187)e[0m e[0;1mSET SQL_AUTO_IS_NULL=0e[0m
  e[4;35;1mSQL (0.000142)e[0m e[0mBEGINe[0m
  e[4;36;1mMembers Columns (0.006676)e[0m e[0;1mSHOW FIELDS FROM
  e[4;35;1mTask Columns (0.007478)e[0m e[0mSHOW FIELDS FROM
  e[4;36;1mSQL (0.000180)e[0m e[0;1mROLLBACKe[0m
  e[4;35;1mSQL (0.000134)e[0m e[0mBEGINe[0m
  e[4;36;1mSQL (0.000133)e[0m e[0;1mROLLBACKe[0m

Thanks for the help

(and I have no idea why I am getting the warning of missing the
default helper path)

i think you're hitting the limitation that you can't #<< to a parent
that's not been saved


That is the way that I had it at first, but after referring back to
the book (pg 330 at the bottom) it shows the save done after the child
model is added to the parent.

I have tried again doing what you said and it is still failing:
@listing.online_showings << showing
@listing.online_showings[0].id > 0

As a rule of thumb, I would be calling save!, as long as I wasn't
checking for errors. Maybe save is failing?


Thanks for the help.

I moved the save to after all the child models were added and for some
reason started getting a validation error. I then clued in that the
validates_as_attachment was failing for the attachment_fu plugin.
Once I disabled that it started working as expected.

Thanks again.

I am still using 1.2.5, although that would explain the NoMethodError,
which somehow disappeared.