私は2つのモデルを持っています。UserとWant。A User has_many: Wants.
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私が望むようにエラーが私のビューに表示されているにもかかわらず、私がただ戻ってきた場合。
理解できない?どうしたの?そして、なぜそれはとても不可解なのですか?
ありがとう。