Ruby on Rails Monday, July 9, 2012

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 test@email.eu, 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: test@smt.com, test@smt.pl, test@oo.com username for test@oo.com 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 rubyonrails-talk@googlegroups.com.
> > To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
> > 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 rubyonrails-talk@googlegroups.com.
> To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
> 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 rubyonrails-talk@googlegroups.com.
To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe@googlegroups.com.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en-US.

No comments:

Post a Comment