then try something like (replace while) users.each do |user| username = user.email.split(/@/).first prefix = 1 while !user.valid? user.username=prefix.to_s+username prefix+=1 end user.save end
tom On Jul 9, 2012, at 19:50 , regedarek wrote: > But what if I would like to have usernames with increasing prefix this > "test", "1test", "2test" > > W dniu poniedziałek, 9 lipca 2012 15:35:32 UTC+2 użytkownik tom meinlschmidt > napisał: > If you have your validations set, you can use something like > > in User model: > scope :without_username, where(:username => nil) > validates :username, :uniqueness => true, :presence => false > > and then use > users = User.without_username > > users.each do |user| > username = user.email.split(/@/).first > user.username = username > while !user.valid? > user.username+=rand(10).to_s > end > user.save > end > > tom > > On Jul 9, 2012, at 15:01 , regedarek wrote: > > > I would like to create rake task to set the username of all users' without > > a username to the part before the '@' in their email address. So if my > > email is [email protected], my username should become test. If it's not > > available, prepend it by a number (1). > > > > So i have problem witch checking uniqness of username. Code below isn`t > > working after second loop ex: when i have three emails: [email protected], > > [email protected], [email protected] username for [email protected] will be empty. > > > > I have of course uniqness validation for username in User model. > > > > desc "Set username of all users wihout a username" > > task set_username_of_all_users: :environment do > > users_without_username = User.select{ |u| !u.username? } > > users_without_username.each do |user| > > username = user.email.split('@').first > > if User.find_by_username(username).blank? > > user.username = username > > user.save > > else > > User.find_by_username(username).each_with_index do |u, index| > > u.username = username.insert(0, index) > > u.save > > end > > end > > end > > end > > > > Other ideas are in Gist: https://gist.github.com/3067635#comments > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Ruby on Rails: Talk" group. > > To view this discussion on the web visit > > https://groups.google.com/d/msg/rubyonrails-talk/-/4tkg3bBKTbcJ. > > To post to this group, send email to [email protected]. > > To unsubscribe from this group, send email to > > [email protected]. > > For more options, visit this group at > > http://groups.google.com/group/rubyonrails-talk?hl=en-US. > > -- > =============================================================================== > > Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache > > www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz > =============================================================================== > > > > -- > You received this message because you are subscribed to the Google Groups > "Ruby on Rails: Talk" group. > To view this discussion on the web visit > https://groups.google.com/d/msg/rubyonrails-talk/-/aKnXNZM24MMJ. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]. > For more options, visit this group at > http://groups.google.com/group/rubyonrails-talk?hl=en-US. -- =============================================================================== Tomas Meinlschmidt, MS {MCT, MCP+I, MCSE, AER}, NetApp Filer/NetCache www.meinlschmidt.com www.maxwellrender.cz www.lightgems.cz =============================================================================== -- You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en-US.

