と呼ばれる結合テーブルによって接続されている2つのテーブルとuser
があります。それぞれにとがあります。skill
user_skill
UserSkill
current_proficiency_level
interest_level
私が着るまで、すべてが完全にうまくいきましvalidates_numericality_of :current_proficiency_level
たUserSkill
。User
編集フォームを保存しようとすると、次のエラーが発生します。数値以外の値が少なくとも1つある場合にのみ、エラーが発生しますcurrent_proficiency_level
。すべてが有効な場合、それはうまく保存されます。
1つ以上の新しいレコードを保存できなかったため、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
ですか?