has_many belongs_to in multiple tables

My model association looks like this

class User < ActiveRecord::Base has_many :correlations has_many :roles, :through => :correlations has_many :skills, :through => :correlations end

class Skill < ActiveRecord::Base has_many :correlations has_many :roles, :through => :correlations has_many :users, :through => :correlations end

class Role < ActiveRecord::Base has_many :correlations has_many :users, :through => :correlations has_many :skills, :through => :correlations end

class Correlation < ActiveRecord::Base belongs_to :role belongs_to :skill belongs_to :user end

ON update user each time i have two tpuples in db for e.g

  role_id                      user_id                          skill_id
  admin_id                   u_id                               Null
    Null                         u_id                              skill_id

instead of

  role_id                      user_id                          skill_id

  admin_id                   u_id                              skill_id

#users/controller

def update @user = User.find(params[:id])

respond_to do |format|
  if @user.update_attributes(params[:user])
    format.html { redirect_to(@user, :notice => 'User was successfully updated.') }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @user.errors, :status => :unprocessable_entity }
  end
end

end

Please suggest

Thanks in advance

any idea on this issue ??