gpt4 book ai didi

ruby-on-rails - 设备中的匿名用户 - Rails

转载 作者:行者123 更新时间:2023-12-02 11:10:16 26 4
gpt4 key购买 nike

我是 Rails 新手,我尝试使用匿名用户进行简单的身份验证。我关注了this教程,我有这个错误:

undefined method `find_or_initialize_by_token'

这是我的 AnonymousUser 模型:

class AnonymousUser < User
ACCESSIBLE_ATTRS = [:name, :email]
attr_accessible *ACCESSIBLE_ATTRS, :type, :token, as: :registrant
def register(params)
params = params.merge(type: 'User', token: nil)
self.update_attributes(params, as: :registrant)
end
end

这是我的用户模型:

class User < ActiveRecord::Base
devise :database_authenticatable, :confirmable, :lockable, :recoverable,
:rememberable, :registerable, :trackable, :timeoutable, :validatable,
:token_authenticatable
attr_accessible :email, :password, :password_confirmation, :remember_me
end

最后一个重要的是我的 ApplicationController ,它有这个错误:

class ApplicationController < ActionController::Base
protect_from_forgery

def authenticate_user!(*args)
current_user.present? || super(*args)
end

def current_user
super || AnonymousUser.find_or_initialize_by_token(anonymous_user_token).tap do |user|
user.save(validate: false) if user.new_record?
end
end

private
def anonymous_user_token
session[:user_token] ||= SecureRandom.hex(8)
end
end

有人告诉我,如果 AnonymousUser 用户继承自 User,则 AnonymousUser 有名为 find_or_initialize_by_token 的方法,但我不知道如何修复它。

最佳答案

如果您安装了最新的 Rails,请尝试重构:

# in ApplicationController#current_user

AnonymousUser.find_or_initialize_by_token(anonymous_user_token).tap do |user|
user.save(validate: false) if user.new_record?
end

像这样:

AnonymousUser.safely_find(anonymous_user_token)

并将 find_or_initialize_by_tokensave(validate: false) 推送到模型中。

关于ruby-on-rails - 设备中的匿名用户 - Rails,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14455375/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com