Ruby on rails 我如何在注册Desive(RubyonRails)时自动创建adress参数

Ruby on rails 我如何在注册Desive(RubyonRails)时自动创建adress参数,ruby-on-rails,ruby,authentication,devise,Ruby On Rails,Ruby,Authentication,Devise,我目前正在尝试在注册RubyonRails设备Gem时自动创建一个user_地址(这将是一个随机生成的散列,现在是硬编码的)字符串。我已将用户_地址添加到允许参数列表中。我目前正试图通过添加以下方法将此逻辑添加到registrations_controller.rb中: def create super do current_user.user_address = '1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX' end end 我想这是因为在实际的POST

我目前正在尝试在注册RubyonRails设备Gem时自动创建一个user_地址(这将是一个随机生成的散列,现在是硬编码的)字符串。我已将用户_地址添加到允许参数列表中。我目前正试图通过添加以下方法将此逻辑添加到registrations_controller.rb中:

def create
  super do
   current_user.user_address = '1F1tAaz5x1HUXrCNLbtMDqcw6o5GNn4xqX'
 end
end
我想这是因为在实际的POST(create user)被处理之前,不能定义当前用户,但我不确定这样做的方法


任何帮助都将不胜感激,提前感谢

如果我理解正确(我想我理解),您可以在控制器中的“创建”操作中不再尝试这样做,而是在用户模型上使用模型回调。。这样,它会在用户注册时自动创建

例如:

class User < ApplicationRecord

      before_create :assign_user_address
      validates_uniqueness_of :user_address

      def assign_user_address
        begin
          self.user_address = SecureRandom.hex
          other_user = User.find_by(user_address: self.user_address)
        end while other_user
      end

end
class用户
before_create将生成用户_地址并将其分配给正在注册的用户,而validates_university_确保您永远不会一次性拥有重复的用户地址(虽然使用随机字符串进行复制的可能性很小..但安全总比抱歉好..我发现这种方法非常简单,可以保持控制器干净整洁


如果这不是您想要的,请告诉我。

如果我理解正确(我想我理解),您可以在控制器的创建操作中不再尝试这样做,而是在用户模型上使用模型回调。。这样,当用户注册时,它会自动创建

例如:

class User < ApplicationRecord

      before_create :assign_user_address
      validates_uniqueness_of :user_address

      def assign_user_address
        begin
          self.user_address = SecureRandom.hex
          other_user = User.find_by(user_address: self.user_address)
        end while other_user
      end

end
class用户
before_create将生成用户_地址并将其分配给正在注册的用户,而validates_university_确保您永远不会一次性拥有重复的用户地址(虽然使用随机字符串进行复制的可能性很小..但安全总比抱歉好..我发现这种方法非常简单,可以保持控制器干净整洁


如果这不是您想要的,请告诉我。

那么用户地址将在创建时自动生成?那么用户地址将在创建时自动生成?完全没有问题!很高兴它帮助了您!完全没有问题!很高兴它帮助了您!