我在我的控制器這段代碼和模型繞過控制器中兩個不同變量的模型中的方法?
SessionsController
def create
user = User.from_omniauth(env["omniauth.auth"])
user.skip_password_validation = true
unless user.present?
user = User.find_by(email: params[:session][:email].downcase)
if user && user.authenticate(params[:session][:password])
log_in user
redirect_to user
# Log the user in and redirect to the user's show page.
else
# Create an error message.
flash.now[:danger] = 'Invalid email/password combination'
render 'new'
end
else
log_in user
redirect_to user
end
end
用戶模型
def User.digest(string)
cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST :
BCrypt::Engine.cost
BCrypt::Password.create(string, cost: cost)
end
def self.from_omniauth(auth)
where(provider: auth.provider, uid: auth.uid).first_or_create do |user|
user.provider = auth.provider
user.uid = auth.uid
user.name = auth.info.name
user.email = auth.info.email
user.oauth_token = auth.credentials.token
user.oauth_expires_at = Time.at(auth.credentials.expires_at)
user.save!
end
end
end
,因爲我有我的會話控制器,兩個不同的登錄方法我需要跳過方法在我的用戶模型中。我查閱了一些內容,比如過濾器之前,動作和屬性訪問器之前以及搜索網頁,但似乎無法找到如何跳過模型中的方法,所以我可以繞過我在會話中分配的每個用戶變量控制器?也就是說,一個用於omniauth facebook,另一個用於標準登錄。
你想要哪種方法跳過? – akash
嗨,我想跳過'self = User.find_by(email:params [:session] [:email] .downcase''def self.from_omniauth(auth)'方法'這是基本登錄引起的一個'未定義的方法'提供者'錯誤,所以跳過我已經分配的第二個'用戶'變量 –