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

时间:2015-02-12 17:48:57

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

随着Facebook API停止用户名检索,我需要在Rails中创建一个用户名,方法是将以下字段添加到一起:

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

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

1 个答案:

答案 0 :(得分:0)

查找要更新的所有用户,然后通过它们进行迭代。在这种情况下,我将以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