HABTM issue

class User < ActiveRecord::Base
has_many :correlations
has_many :roles, :through => :correlations
has_many :skills, :through => :correlations
attr_accessible :email, :password, :password_confirmation, :remember_me, :role_ids, :skill_ids, :username, :first_name, :last_name, :address, :city, :state , :country, :phone_number, :photo,:fullname, :shortbio, :weburl

def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)

end
def skill?(skill)
return !!self.skills.find_by_name(skill.to_s.camelize)
end

end

class Correlation < ActiveRecord::Base
belongs_to :role
belongs_to :skill
belongs_to :user
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 :skills, :through => :correlations
has_many :users, :through => :correlations

end

module ArticlesHelper

def skill_list
    skills_ids = current_user.skill_ids
    skills_ids.delete_if {|x| x == nil}
    skills = Skill.find(skills_ids)
    return skills
end

end

if working fine but on heroku console

@user.skill_ids
NoMethodError: undefined method skill_ids' for #<ActiveRecord::Relation:0x00000005515b58> @user.role_ids NoMethodError: undefined method skill_ids’ for #ActiveRecord::Relation:0x00000005515b58

Any idea?

Pleaase help

ccdd

Your problem is here:

@user.skill_ids
NoMethodError: undefined method `skill_ids' for
#<ActiveRecord::Relation:0x00000005515b58>
@user.role_ids
NoMethodError: undefined method `skill_ids' for
#<ActiveRecord::Relation:0x00000005515b58>

Try @user.skills.all and @user.roles.all.

Of you really DO want just the ids (seriously ask yourself why), then
@user.skills.all.collect(&:id) and @user.roles.all.collect(&:id)

not working

not working

It is no good just saying 'not working'. Post exactly what you have
tried and exactly what the result is.

By the way please don't top post, it makes it difficult to follow the
thread. Insert your replies inline at appropriate points in the
previous message. Thanks.

Colin

class User < ActiveRecord::Base
has_many :correlations
has_many :roles, :through => :correlations
has_many :skills, :through => :correlations
attr_accessible :email, :password, :password_confirmation, :remember_me, :role_ids, :skill_ids, :username, :first_name, :last_name, :address, :city, :state , :country, :phone_number, :photo,:fullname, :shortbio, :weburl

Why do you have these att_accessible things? If these are the columns from the database table users, then ActiveRecord will already take care of those. I think you should take out the entire attr_accessible line and try again. (Well, depending on how they are used, you might need to retain a `attr_accessor … Ah, you have attr_accessible (an ActiveRecord thing) not attr_accessor (a Ruby thing).) OK, so I still wonder if having :skill_ids in that list is wrong since it is not a column, but a method added by ActiveRecord. (and same for :role_ids)

def role?(role)
return !!self.roles.find_by_name(role.to_s.camelize)

end
def skill?(skill)
return !!self.skills.find_by_name(skill.to_s.camelize)
end

Unless you actually depend on true/false rather than just truthiness, you don’t need the !! (or the return)

def role?(a_role)

self.roles.find_by_name(a_role.to_s.camelize)

end

end

class Correlation < ActiveRecord::Base
belongs_to :role
belongs_to :skill
belongs_to :user
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 :skills, :through => :correlations
has_many :users, :through => :correlations

end

module ArticlesHelper

def skill_list
    skills_ids = current_user.skill_ids
    skills_ids.delete_if {|x| x == nil}
    skills = Skill.find(skills_ids)
    return skills
end

end

if working fine but on heroku console

@user.skill_ids
NoMethodError: undefined method skill_ids' for #<ActiveRecord::Relation:0x00000005515b58> @user.role_ids NoMethodError: undefined method skill_ids’ for #ActiveRecord::Relation:0x00000005515b58

Any idea?

Pleaase help

ccdd

-Rob

Rob Biedenharn

Rob@AgileConsultingLLC.com http://AgileConsultingLLC.com/

rab@GaslightSoftware.com http://GaslightSoftware.com/

hi…
please help me out m very much new to rails… just how to create form using rails???