0

コントローラ機能

def request_invite

        if !request.xhr?
                render_404
                return
        end

        @invitation = Invite.new(params[:invite])

        if @invitation.save
            @return = { :error => false, :response => "Thank you" }
        else
                error_message = '<div class="error_message">' + @invitation.errors.full_messages.map {|error| "<p>#{error}</p>"}.join + "</div>"
            @return = { :error => true, :response => error_message } 
        end

        render :json => ActiveSupport::JSON.encode( @return )

end

モデル

class Invite < ActiveRecord::Base

    validates :email, :presence => true, :uniqueness => true

    validates_format_of :email, :with => /^([^@\s]+)@((?:[-a-z0-9]+\.)+[a-z]{2,})$/i

end

これは、データベースに保存して成功メッセージを表示するか、存在する場合はエラーをスローします...

メールがデータベースにすでに存在している場合でも成功メッセージを表示したいので、メールがすでに追加されていることは表示されません

4

1 に答える 1

1

存在を使用してこれを達成できますか?。このように見えるかもしれません

email_exists = Invite.where(:email => params[:invite][:email]).exists?

# Create the new invitation if email not already used
if email_exists || Invite.new(params[:invite]).save
  @return = { :error => false, :response => "Thank you" }
else
  # error
  ...
end

rescueまたは、を使用してActiveRecord例外をキャッチすることもできます

于 2012-07-25T16:49:36.597 に答える