ActiveSupport::MessageVerifier::InvalidSignature 在 RegistrationsController#create
ActiveSupport::MessageVerifier::InvalidSignature in RegistrationsController#create
我目前正在开发安装了 ActiveStorage
的 Rails 6 应用程序。我正在使用设计进行身份验证。尝试在注册表单上创建新用户时出现以下错误。
ActiveSupport::MessageVerifier::InvalidSignature in RegistrationsController#create
我认为原因来自尝试为模型设置默认头像 User
。创建用户后,我尝试将 astronaut.svg
设置为默认头像。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :posts
has_one_attached :avatar
before_create :set_defaults
def set_defaults
self.avatar = 'assets/images/astronaut.svg' if self.new_record?
end
end
如何修复?
这段代码对我有用:
def set_defaults
if self.new_record?
self.avatar = Rack::Test::UploadedFile.new(
Rails.root.join('app/assets/images/astronaut.png'),
'image/png',
)
# file = File.new(Rails.root.join('app/assets/images/astronaut.png'))
# self.avatar = Rack::Test::UploadedFile.new(
# file.path,
# Mime::Type.lookup_by_extension(File.extname(file).strip.downcase[1..-1]).to_s,
# )
end
end
不过,我建议不要在 before_create
中发送默认图片,而是使用助手:
def user_avatar(user)
if user.avatar.attached?
image_tag user.avatar
else
image_tag 'astronaut.png'
end
end
我目前正在开发安装了 ActiveStorage
的 Rails 6 应用程序。我正在使用设计进行身份验证。尝试在注册表单上创建新用户时出现以下错误。
ActiveSupport::MessageVerifier::InvalidSignature in RegistrationsController#create
我认为原因来自尝试为模型设置默认头像 User
。创建用户后,我尝试将 astronaut.svg
设置为默认头像。
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_many :posts
has_one_attached :avatar
before_create :set_defaults
def set_defaults
self.avatar = 'assets/images/astronaut.svg' if self.new_record?
end
end
如何修复?
这段代码对我有用:
def set_defaults
if self.new_record?
self.avatar = Rack::Test::UploadedFile.new(
Rails.root.join('app/assets/images/astronaut.png'),
'image/png',
)
# file = File.new(Rails.root.join('app/assets/images/astronaut.png'))
# self.avatar = Rack::Test::UploadedFile.new(
# file.path,
# Mime::Type.lookup_by_extension(File.extname(file).strip.downcase[1..-1]).to_s,
# )
end
end
不过,我建议不要在 before_create
中发送默认图片,而是使用助手:
def user_avatar(user)
if user.avatar.attached?
image_tag user.avatar
else
image_tag 'astronaut.png'
end
end