0

Email has already been taken 即使在登录页面上我也会收到错误消息。早些时候这条消息没有显示,现在我不知道为什么它会检查:登录时电子邮件的唯一性。

我什至尝试validates_uniqueness_of :email在 login( validates_uniqueness_of :email, :on => :create) 上评论或指定它,但似乎没有任何效果。

我正在使用设计宝石。

这是我的登录页面:

    <%= form_for(resource, :as => resource_name, :url => session_path(resource_name) , :validate=>true) do |f| %>

    <%= f.label :email %>

    <%= f.email_field :email %>

    <%= f.label :password %>
    <p>
        <%= f.password_field :password   %>
    </p>
    <div id="lower">
        <% if devise_mapping.rememberable? -%>
        <%= f.check_box :remember_me %> <%= f.label :remember_me ,:class=>"check" %>
        <% end %>
        <%= f.submit "Login",:value=>"Login"  %>
        <div>
            <%= link_to "Forgot your password?",new_password_path('registered_user') %>
        </div>
        <div>
            <%= link_to "Sign Up", new_registered_user_registration_path %>
        </div>
    </div>
    <% end %>

会话控制器

  def create
    respond_to do |format|

      format.html{ super }
      format.json do
       .................
      end
      format.js do
         ................. 
      end
    end

  end

我的路线

  devise_for :registered_users, :path_names=> {:sign_up=> "signup",:sign_in=> "login", :sign_out=> "logout"}, :controllers => { :registrations => "registrations",:sessions=>"sessions" }

我的模型:

  devise :database_authenticatable, :registerable,
         :recoverable, :trackable, :validatable

  validates_presence_of :email,:phone, :address1,:first_name, :last_name,:city , :state, :zip_code

     validates :email, :email_format => true
      validates_presence_of :password, :on => :create
      validates_presence_of :current_password, :on => :edit
      validates_length_of :password, :minimum => 6, :on => :create

我找到了一种快速而肮脏的方法:)以这种方式添加内联验证:

    <%= f.email_field :email , :validate => { :uniqueness => false },:type=>"text" %>

当你们得到什么问题时,请告诉我。

4

0 回答 0