我有两个表user
和skill
,它们由一个名为 的连接表连接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
?