Cannot set an attribute in my Join table do you think it matters which controller I use?

I tried out some code in my console and I am having difficulty
translating it for my view and controller so that it gives me the same
My console:

    @contract = "900700", 

st_date:“2012-01-01”, end_date: “2012-30-06”)

    @code = "S-5463", status: "Active", 

description: “This and That”)

    @codeline = => "80.00", 

:contract => @contract)

    => #<Codeline id: 91, contract_id: 64, code_id: 54, units_alloc: 


Using pgadmin3 I check my codelines table and I get the same result

    id    contract_id    code_id   units_alloc
    91         64            54       80.00

But if I try to run this through my contracts_controller and view I get:

    id    contract_id    code_id   units_alloc
    1         1           1               ---I think this record 

comes from the
1 1 80.00 —I think this record
comes from the =>
params[:units_alloc],:contract => @contract)

Here are my models:

class Contract < AR::Base
has_many :codelines
has_many :codes, :through => :codelines

accepts_nested_attributes_for :codes

attr_accessible :codes_attributes,:codes,:authnum,:st_date,:end_date


class Codeline < AR::Base
belongs_to :contract
belongs_to :code
units_alloc … this is the attribute I would like to set

class Code < AR::Base
has_many :codelines
has_many :contracts, :through => :codelines

The new/create action of my app/controllers/contracts_controller.rb

def new
@contract = =>
params[:units_alloc],:contract => @contract)

def create
@contract =[:contract])
flash[:success] = “New Contract has been saved”
redirect_to @contract
@title = “You have some errors”
render ‘new’

the partial for my view in app/views/contracts/_fields.html.haml

= f.fields_for :codes do |ff|
     = ff.label :name, "Code Name"
     = ff.text_field :code_name
= f.fields_for :codelines do |ff|
    = ff.label :name, "Units Alloc"
    = ff.text_field :units_alloc

Can you please have a look at this and give me some direction?


Something you think should be happening isn’t happening. I don’t see
any debugging code in your files.

Are you using your log file to verify the parameters being passed in
from your form and review the queries being executed?

You might want to avoid mass assignment for security reasons and to
give more control.
For example, in your controller,

 :stuff = { :authnum    => params[:contract][:authnum],
              :st_date      => params[:contract][:st_date],
              :end_date    => params[:contract][:end_date] }
 logger.debug("------------------------ stuff #{stuff.inspect}")
 @contract =

I found a solution that resolved all my issues at this site,

It is the ninth bullet down where you read that the nested_form should
be based on the join model or something similar.

I did some quick refactoring and it worked.