2016-05-12 37 views
0

我想在註冊時爲用戶創建一些示例數據,以便它們不必以空白畫布開始。爲每個賬戶創建rails應用程序的演示數據

我目前在類中定義了很多靜態數據,然後迭代,但是建立關係非常麻煩,我認爲這很脆弱。

我認爲有一些演示裝置(獨立於我的測試集)將是一個很好的方法來做到這一點,但由於記錄綁定到一個帳戶,我不明白我如何插入這些數據並將其附加到加載燈具時的帳戶。

這可能不是最好的方法,但如果有更好的方法,請讓我知道。

+0

也許做法克爾/工廠女孩的東西嗎? – Doon

+0

Faker可能適用於某些內容,但其中很大一部分將是特定領域的。 – apchester

回答

0

每個RAILS應用程序都有seeds.rb存在於db/文件夾中。正如名稱所示,它用於根據您希望的默認記錄播種您的數據庫。 所以這就是我如何用我的seeds.rb.Creating多條記錄,常量,然後把這些記錄在你的數據庫,只需運行rake db:seed假設你有DB ready.See HERE更多的Infor

我的種子。 RB

###seed eventype table with default values 
["birthday","farewell","party"].each do |f| 
    EventType.find_or_create_by({name:f.upcase}) 
end 

###create users with random names 
##after creating users,create associated fields 

%w[mike john paul allen harry betty].each_with_index do |name,index| 
    @user = User.find_or_create_by({email:"user_#{name}@gmail.com"}) 

    ##user has_one address 
    @user.create_address({:address_2=>"street 1,near berry lane"}) 

    ##user has_many pictures 
    @user.pictures.create!({:title=>"Title of the picture",:picture => File.new("#{Rails.root}/public/images/test.jpg")}) 


end 

你甚至可以使用(0..6).each do循環創建N條記錄,你在DB的願望。 例如: -

(0..100).each do 
    ###create user/pictures etc 
end 

但是你必須小心遵守所有驗證和建立有效的記錄要不然這不會工作。例如,如果在用戶模型中,您也期待用戶名,那麼在seeds.rb中,您必須通過用戶名,以便它輕鬆通過驗證。

============================================ ============================= 如果你不想使用db種子,你可以使用回調on: :create(我沒有喜歡觀察)。簡單的例子可以是:

##in user.rb 
after_commit :create_default_account, on: :create 

def create_default_account 
##assuming user has_one :account 
self.build_account({:name=>"Default account"}) 
end 

希望它有助於

+0

我不需要爲數據庫創建種子,而是在用戶註冊時創建用戶帳戶內的內容,以便他們擁有自己的演示內容。 – apchester

+0

我已經更新了我的答案,除了seed.try外,還有其他選項。@ apchester – Milind

相關問題