私は2つのモデルを持っています。User
とWant
。A User
has_many:
Want
s.
Want
モデルには 以外user_id
に 1 つのプロパティがありますname
。
Want
ユーザーが同じ名前で 2 つのウォンツを作成するために送信できないように、モデルにカスタム検証を記述しました。
validate :existing_want
private
def existing_want
return unless errors.blank?
errors.add(:existing_want, "you already want that") if user.already_wants? name
end
already_wants?
メソッドは User モデルにあります。
def already_wants? want_name
does_want_already = false
self.wants.each { |w| does_want_already = true if w.name == want_name }
does_want_already
end
create
検証仕様はモデル テストに合格しますが、次のアクションに複製を送信しようとすると、機能テストに失敗しWantsController
ます。
def create
@want = current_user.wants.build(params[:want])
if @want.save
flash[:success] = "success!"
redirect_to user_account_path current_user.username
else
flash[:validation] = @want.errors
redirect_to user_account_path current_user.username
end
end
エラー: can't dump hash with default proc
私のコードにつながるスタック トレースはありません。
問題を次の行に絞り込みました。
self.wants.each { |w| does_want_already = true if w.name == want_name }
true
私が望むようにエラーが私のビューに表示されているにもかかわらず、私がただ戻ってきた場合。
理解できない?どうしたの?そして、なぜそれはとても不可解なのですか?
ありがとう。