【问题标题】:How to avoid error -> Duplicate entry如何避免错误 -> 重复输入
【发布时间】:2011-05-05 09:25:45
【问题描述】:

表用户(带有 id、用户名、密码、is_admin)

我的控制器(我添加的地方)

  def create
    @user = User.new(params[:respondent])
#   entered     = User.find(:all, :conditions => ["email = ?", @user])
    render :json => @user.to_ext_json(:success => @user.save)
    return false 
  end

当我粘贴相同的电子邮件时,我得到了这个:

pre>Mysql::Error: Duplicate entry 'sam@sa.com' for key 'email': INSERT INTO `users` (`created_at`, `updated_at`, `email`) VALUES('2011-05-05 09:05:57', '2011-05-05 09:05:57', 'sam@sa.com')</pre>

如何避免这种情况?我应该在控制器中写什么(如果?)

谢谢!

【问题讨论】:

    标签: mysql sql ruby-on-rails


    【解决方案1】:

    您可以验证模型中的唯一性

    validates :email, :uniqueness => :true
    

    或者你可以像这样在你的控制器中拯救 RecordNotUnique

    begin
      # create user
    rescue ActiveRecord::RecordNotUnique => e
      # handle duplicate entry
    end
    

    【讨论】:

      【解决方案2】:

      您不应该在控制器中这样做。这些是您应该在模型中进行的验证。请通读this guide 了解如何操作。

      【讨论】:

        猜你喜欢
        • 2017-02-12
        • 1970-01-01
        • 2020-09-27
        • 1970-01-01
        • 2021-07-27
        • 1970-01-01
        • 2013-09-05
        • 1970-01-01
        • 2015-04-25
        相关资源
        最近更新 更多