私は非常に難しいレールの問題を抱えています。私はいくつかの助けを求めると思っていました。状況は次のようになります。Rails - current_user情報が必要なカスタム検証
私は自分のユーザーモデルに安静な認証を使用しています。今、ユーザは数値である 'gold'という名前のフィールドを持っています。 Scaffoldingを使って作成されたBookという別のモデルがあります。
私がしたいことは簡単ですが、私はそれを行う方法を見ることができません。私はいくつかの検証を追加したいと思います。もしユーザーの金が100ではないとすれば、(足場の標準のビューから)新しい本を作成することはできません。
問題は、私のモデルからこれを検証するためにcurrent_user情報が必要なことです。ユーザーIDを取得して金額を取得するためには、その必要があります。私はそれをする良い方法(もしあれば)を見つけることができません。
コントローラーからもう1つの考えがありました。
if not User.has_the_needed_gold(current_user, 100)
flash[:goldError] = 'You do not have the needed gold to create this book.'
#end
respond_to do |format|
if @book.save
flash[:notice] = 'Book was successfully created.'
format.html { redirect_to(@book) }
format.xml { render :xml => @book, :status => :created, :location => @book }
else
format.html { render :action => "new" }
format.xml { render :xml => @book.errors, :status => :unprocessable_entity }
end
end
さて、私は出力そのメッセージをすることができず、新しいの保存中止:ブロックは本当に私が(作成足場の内側に)私自身のエラーメッセージを挿入することはできません「@ book.saveであれば、」しかし、標準本も同様です。私はベースに自分のエラーを追加しようとしましたが、それは(私は推測して保存した後に)クリアされました。私は状況とかなり混乱しています。私は結果を出さずに2時間ほど探しています。
誰もがそれを助けることができる場合は、そうしてください、あなたは私のトラブルの多くを割くだろう:)
ありがとうを読み取るための!
どのようにモデルを定義していますか?書籍はユーザーに属し、ユーザーは多数の書籍を所有していますか? – s84
実際、それは私の場合とは逆になるはずです。ユーザーには本がありますが、書籍は多くのユーザーに属することができます。私はまだ定義を実際に追加していませんが。この質問は鐘を鳴らします。関係を介して情報にアクセスすることは、それを考えるにはあまりにも愚かであった:/私は見てみる – Spyros