Zalozyc 100 userow

Witajcie,

Nie wiem jak dobrze sformuowac pytanie.

Chce z automatu zalozyc 100 userow, kazdy ma miec uniklany email/ login, poprawna date urodzenia, plec (valie of [0,1,2]) image (paperclip).

Jak do tego sie zabrac zeby sie nie narobic ? Czytalem o Factory girl, Machinist … zabieram sie do tego od paru dni, i jakos nie mam pomyslu.

Co polecacie ? rails 3.0.3

Pozdrowienia

skrypt sqlowy na poziomie bazy danych ?

Hmm… wolalbym cos railsowego, zgoda, skrypt SQL jest ok, ale przypuscmy, ze potem bedziesz chcial cos ekstra, np. dolozenie czegos w zaleznosci od usera… Pozatym sam skrypt SQL troche trudno bedzie zaprzegnac do generowania obrazkow dla paperclipa…

http://railscasts.com/episodes/126-populating-a-database — na pewno dobry przykład do obczajenia jak mniej więcej takie rzeczy robić. W przypadku wrzucenia obrazków, Populator może sprawiać problemy — wtedy wygodniej jest samemu w pętli wrzucać rekordy (z wartościami generowanymi przez Fakera) i załączać paperclipowi pliki wylosowane z puli, którą byś sobie trzymał gdzieś na dysku.

require ‘faker’
require ‘digest/sha1’

100.times do
pass = Digest::SHA1.hexdigest Time.now.to_s
user = User.create!(
:username => Faker::Internet.username,
:email => Faker::Internet.email,
:password => pass,
:password_confirmation => pass,
:first_name => Faker::Name.first_name,
:last_name => Faker::Name.last_name,
:birth_date => Date.today - 18.years - rand(50).years - rand(12).months - rand(30).days,
:gender => [0,1,2].rand
)
end

Mozna Time.at(rand(1893456000)-946728000) zamiast Date.today - 18.years - rand(50).years - rand(12).months - rand(30).days

Dziwne właśnie że faker nie ma Fake::Date

[quote=Paweł Kondzior]Mozna Time.at(rand(1893456000)-946728000) zamiast Date.today - 18.years - rand(50).years - rand(12).months - rand(30).days

Dziwne właśnie że faker nie ma Fake::Date[/quote]
I nagroda za najbardziej bezużytecznego posta idzie do …

[quote=Świstak][quote=Paweł Kondzior]Mozna Time.at(rand(1893456000)-946728000) zamiast Date.today - 18.years - rand(50).years - rand(12).months - rand(30).days

Dziwne właśnie że faker nie ma Fake::Date[/quote]
I nagroda za najbardziej bezużytecznego posta idzie do …[/quote]
Oj @Świstak, Pawel chcial pomoc, jak sie uwazasz za super specjaliste i masz byc zlosliwy to sobie odpusc.

@Pawel, dzieki

Mysle ze nie bez powodu Faker nie ma Fake::Date, bo jesli korzystasz z Populator gem to mozna tak:

User.populate 100 do |user| user.birthdate = (50.years.ago..20.years..ago) # bedzie losowal z tego przedzialu end
Jesli natomiast chodzi o upload obrazkow, zerznalem z sieci darmowe avatary, w tablicy trzymam sciezki i populatorem losuje sobie.

Smiga az milo.

Dziekuje wszystkim za pomoc

W międzyczasie szukałem właśnie sposobu na wybranie losowej daty z range, dzięki :wink:

Edit:

W zasadzie działa tak samo jak napisałem z tym że nie tak brzydko i ogarnia odrazu kilka edge cases.

Nadal się zastanawiam czy mój post był bezużyteczny… pewnie był :wink: ale intencji napewno nie miałem złych panie Świstak.

Na pewno nie bardziej niż mój, ale ja przynajmniej miałem frajdę z trolowania.