![](/img/trans.png)
[英]What's the best approach for creating 1 off pages that requeire database interaction in rails?
[英]What's the best method for creating “test” database content in >= Rails 3.2.0?
我希望能夠創建幾十個用戶,文章(或該應用程序獨有的任何資源)等,以查看該應用程序的外觀以及填充后的響應方式。 這只是出於測試/開發目的,因此我希望能夠輕松地將其回滾,銷毀或進行其他操作。 誰知道呢,也許我想得太多了。
我見過有人建議僅使用標准遷移,這是一個主意,但我想這樣做是可選的,我不希望項目中的每個人都在更新應用程序時獲得示例內容。
其他人提到過“工廠女郎”,但看起來它要么是矯kill過正,要么是真正為測試目的而設計的寶石的側面使用等。目前還不是很清楚。
那么你們在這種情況下會做什么?
我推薦一個耙任務。 您可以將其粘貼在lib/tasks
,以便項目中的每個人都可以使用它,但並不是每個人都需要運行它,只有在運行時它才能執行任何操作。 這是一篇有關編寫rake任務的出色教程 ,只記得記住閱讀Rails標題下的部分,以了解如何引入模型。
在那之后,您的瑞克任務基本上只是紅寶石代碼。 我建議使用動態find_or_create_by
方法來顯式創建所需的模型,並且如果該模型多次運行,則不會多次創建它們。 您還可以選擇在創建特定模型之前銷毀所有記錄。
我不建議使用Factory Girl,因為您可能希望顯式控制模型的創建方式。
這是一個示例性的rake任務,展示了它的簡單程度:
#lib/tasks/my_task.rake
task :fake_data => :environment do
MyModel.find_or_create_by_name("Test")
end
然后在您的控制台中:
rake fake_data
要么:
rake fake_data RAILS_ENV=test
da!
看一下Rails種子數據功能
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.