0

我有两个表userskill,它们由一个名为 的连接表连接user_skill。每个UserSkill都有一个current_proficiency_level和一个interest_level

一切都很好,直到我validates_numericality_of :current_proficiency_level戴上UserSkill. 现在,当我尝试保存User编辑表单时出现以下错误。当我至少有一个 non-numeric 时,我只会收到错误消息current_proficiency_level。当一切都有效时,它保存得很好。

替换 user_skills 失败,因为无法保存一条或多条新记录。

这告诉我,UserSkill当我尝试保存我的User. 这是我的User课程(为清楚起见,省略了一些不相关的代码):

class User < ActiveRecord::Base
  has_many :posts
  has_many :user_skills
  has_many :skills, :through => :user_skills
  validates_associated :user_skills

  def attach_skills(current_proficiency_levels, interest_levels)
    self.user_skills.destroy_all
    self.user_skills = Skill.all.map { |skill|
      user_skill = UserSkill.find_or_create_by_user_id_and_skill_id(self.id, skill.id)
      user_skill.assign_attributes(
        :current_proficiency_level => current_proficiency_levels[skill.id.to_s].negative_if_blank,
        :interest_level => interest_levels[skill.id.to_s].negative_if_blank
      )
      user_skill
    }
  end
end

这是我的UserSkill课。我在这里没有遗漏任何东西;就是这么短。

class UserSkill < ActiveRecord::Base
  belongs_to :user
  belongs_to :skill
  validates_numericality_of :current_proficiency_level
  validates_numericality_of :interest_level
end

为什么validates_numericality_of我保存时没有运行User

4

0 回答 0