# ActiveRecord setting has\_many association

**URL:** <https://www.ruby-forum.com/t/activerecord-setting-has-many-association/181529>\
**Category:** Rails\
**Created:** [January 13, 2010, 9:10am UTC](https://www.ruby-forum.com/t/activerecord-setting-has-many-association/181529 "2010-01-13T09:10:15Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![stonebreaker](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/s/fbc32d/32.png) [@stonebreaker](https://www.ruby-forum.com/u/stonebreaker)\
**Post date:** [January 13, 2010, 9:10am UTC](https://www.ruby-forum.com/t/activerecord-setting-has-many-association/181529/1 "2010-01-13T09:10:15Z")

</div>

Hi,

Can someone help me with this, why does it not work when the association  
is already set, shouldn’t it be overridden?

require ‘rubygems’  
require ‘activerecord’

ActiveRecord::Base.establish\_connection(:adapter =\> ‘sqlite3’, :database  
=\> ‘:memory:’)

class Rider \< ActiveRecord::Base  
connection.create\_table :riders, :force =\> true do |t|  
t.string :name  
end

has\_many :starts  
end

class Start \< ActiveRecord::Base  
connection.create\_table :starts, :force =\> true do |t|  
t.string :class\_no  
t.integer :rider\_id  
end

belongs\_to :rider  
end

# Why is not this true?

other\_rider = Rider.create  
start = Start.new(:rider =\> other\_rider)  
rider = Rider.create(:starts =\> [start])  
puts rider.starts.reload.size == 1 # =\> false

# This works

rider = Rider.create(:starts =\> [Start.create])  
puts rider.starts.reload.size == 1 # =\> true

# And this

rider = Rider.create(:starts =\> [Start.create(:rider\_id =\>  
Rider.create.id)])  
puts rider.starts.reload.size == 1 # =\> true

Thanks
