【问题标题】:Updating MySQL field based on other fields added upon creation in Rails根据在 Rails 中创建时添加的其他字段更新 MySQL 字段
【发布时间】:2015-02-12 17:48:56
【问题描述】:

随着 Facebook API 停止用户名检索,我需要在 Rails 中通过添加以下字段来创建用户名:

User.username = first_name + last_name + rand(99999)

你知道怎么做吗?

【问题讨论】:

    标签: mysql ruby-on-rails ruby ruby-on-rails-4


    【解决方案1】:

    找到您要更新的所有用户,并对其进行迭代。在这种情况下,我将以 1000 个为单位更新每个用户。关于 find_each 的文档

    User.find_each do |user|
      username = "#{user.user_first_name}_#{user.last_name}_#{rand(99999)}"
      user.update_attribute(:username, username)
    end
    

    对于新用户,只需在创建回调之前添加一个到您的用户模型

    before_create :generate_username
    
    ....
    
    def generate_username
      begin
         self.username ="#{self.user_first_name}_#{self.last_name}_#{rand(99999)}"
      end while User.exists?(:username => self.username)
    end
    

    【讨论】:

      猜你喜欢
      • 2012-05-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-30
      • 1970-01-01
      • 2016-02-20
      • 2023-03-18
      • 2019-07-20
      相关资源
      最近更新 更多