Rails登录不同模型属性的问题

时间:2013-05-11 18:43:47

标签: ruby-on-rails model attributes

首先,我是ROR的新手。

我有一个用户模型

class User < ActiveRecord::Base

  attr_accessible :email, :name, :password, :password_confirmation,:gender,:date,:username
  has_secure_password
end  

SessionsController ,用于使用new,create和destroy方法进行登录/注销会话:

class SessionsController < ApplicationController

def create
    user = User.find_by_username(params[:sessions][:username])
    if user && user.authenticate(params[:sessions][:password])
       sign_in
    else
       render sign_in page
    end
end

此实施不适用于用户模型的用户名属性。但与电子邮件属性配合得很好。(我可以使用电子邮件登录,但不能使用用户名登录。)

当我在rails控制台中运行它时,它会对用户名和电子邮件属性进行身份验证,但在本地服务器上它只接受电子邮件属性。

我哪里错了?

此外,我还希望能够让用户使用用户名或电子邮件对我进行签名。我试过这个

class SessionsController < ApplicationController
    def create
      user = User.find_by_username(params[:sessions][:username]) or User.find_by_email(params[:sessions][:email])
      if user && user.authenticate(params[:sessions][:password])

1 个答案:

答案 0 :(得分:1)

我非常强烈建议您使用Devise(https://github.com/plataformatec/devise)之类的内容进行身份验证,尤其是在您不熟悉RoR的情况下。身份验证有很多问题,而且你应用程序的关键部分是你应该有充分的理由尝试自己做。