我想在註冊時爲用戶創建一些示例數據,以便它們不必以空白畫布開始。爲每個賬戶創建rails應用程序的演示數據
我目前在類中定義了很多靜態數據,然後迭代,但是建立關係非常麻煩,我認爲這很脆弱。
我認爲有一些演示裝置(獨立於我的測試集)將是一個很好的方法來做到這一點,但由於記錄綁定到一個帳戶,我不明白我如何插入這些數據並將其附加到加載燈具時的帳戶。
這可能不是最好的方法,但如果有更好的方法,請讓我知道。
我想在註冊時爲用戶創建一些示例數據,以便它們不必以空白畫布開始。爲每個賬戶創建rails應用程序的演示數據
我目前在類中定義了很多靜態數據,然後迭代,但是建立關係非常麻煩,我認爲這很脆弱。
我認爲有一些演示裝置(獨立於我的測試集)將是一個很好的方法來做到這一點,但由於記錄綁定到一個帳戶,我不明白我如何插入這些數據並將其附加到加載燈具時的帳戶。
這可能不是最好的方法,但如果有更好的方法,請讓我知道。
每個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
希望它有助於
也許做法克爾/工廠女孩的東西嗎? – Doon
Faker可能適用於某些內容,但其中很大一部分將是特定領域的。 – apchester