我对铁杆很陌生并且在挑战中遇到困难......
我有3个模型,user,skill和user_skill。
的usermodel
has_many :user_skills
has_many :skills, :through => :user_skills
UserSkillModel
belongs_to :user
belongs_to :skill
SkillModel
has_many :user_skills
has_many :users, :through => :user_skills
在我的UserSkill中,我有一个名为level的列,所以我的想法是,当我为用户分配技能时,我可以定义技能等级。整个关联设置正在我可以告诉,但我不知道如何获得与@ user.skills结果相关联的级别。
attributes:
id: 1
name: Rails
created_at:
updated_at:
答案 0 :(得分:2)
我认为这是解决问题的好方法:
class UserSkill
belongs_to :user
belongs_to :skill
delegate :name, :to => :skill
end
示例:
@user_skills = @user.user_skills(:include => :skill).all
@user_skills.each do |user_skill|
user_skill.name
user_skill.level
end
答案 1 :(得分:0)
以下是您可以采取的措施:
@user.user_skills.each do |user_skill|
skill_name = user_skill.skill.name
level = user_skill.level
end
这将为您提供技能的名称以及用户拥有的每项技能的技能等级。
如果您有用户和技能,并且想要找到该级别,则可以创建用户功能
def skill_level(skill)
self.user_skills.find_by_skill(skill).level
end
然后打电话
@user.skill_level(skill)