31
Post
  :belongs_to :user

User
  :has_many :posts

私のサインアップワークフローでは、最初に投稿のドラフトを作成し、次のページでユーザー情報を入力してサインアップします。

# intermediate step, validate that Post is valid before moving on to User creation
# posts_controller:

@post = Post.new(params[:post])
if @post.valid?
  # go on to create User
else
  render 'new'
end

しかし!チェックしている@postモデルを保存していないため、@postエラーメッセージは作成されません.valid?。保存せずにエラーメッセージを作成するにはどうすればよいですか?

4

2 に答える 2

54

私があなたの質問を正しく理解しているなら、あなたはモデルを保存せずにエラーを取得したいですか?

それがまさに起こっていることです。@post.valid?

エラーがあるかどうかに応じて、trueまたはfalseを返します。エラーがある場合。@post.errorsそれらはハッシュに追加されます。

保存したい場合は、電話をかけるだけです。保存に@post.save 成功した場合はtrueを返し@post.errors、プロセスでの入力中にエラーが発生した場合はfalseを返します。

于 2012-06-12T11:51:46.613 に答える
8

ドキュメントによると、電話をかけ#valid?たり#invalid?、レコードに記録したりすると、#errorsデータが入力されます。

于 2012-06-12T11:50:42.707 に答える