Rails наследует столбец в has_many через ассоциацию - PullRequest
0 голосов
/ 16 ноября 2011

Я довольно новичок в рельсах и наткнулся на вызов ..

У меня есть 3 модели, пользователь, навык и навык пользователя.

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: 

Ответы [ 2 ]

2 голосов
/ 16 ноября 2011

Я думаю, что это хорошее решение для вашей проблемы:

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
0 голосов
/ 16 ноября 2011

Вот как вы можете это сделать:

@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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...