mysql - 根据在 Rails 中创建时添加的其他字段更新 MySQL 字段

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

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

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

关于如何解决这个问题有任何想法吗?

最佳答案

找到您要更新的所有用户,并遍历他们。在这种情况下,我将更新每个用户,每批 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

关于mysql - 根据在 Rails 中创建时添加的其他字段更新 MySQL 字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28484342/

相关文章:

ruby-on-rails - Rails - 使用 Faraday 发送图像

ruby-on-rails - Ruby/Rails 初学者可以将 Ruby 1.9 与 Rails 一起使用吗?

ruby-on-rails - 如何配置类似 WordPress 的永久链接?

mysql - 将相似的值分组到新的 select 语句中

ruby-on-rails - 随机慢速 Rack::MethodOverride#call on Heroku 上的 rails 应用程序

mysql - 带有where子句的子查询mysql

ruby-on-rails - 使用 Polymorphic Paperclip 生成唯一的文件路径

ruby-on-rails - 找不到 gem 'rails (= 4.2.4) x64-mingw32'

mysql - MySQL 中的累积平均值

java - MySQL 8.0.11 抛出 CLIENT_PLUGIN_AUTH is required