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 ??