2012-08-15 77 views
0

相關的項目創建自定義的ID我有一個嵌套的資源這樣什麼是可靠的,爲什麼要在軌道

resources :projects do resources :tasks end

任務有一個名爲號碼字段。每當我創建一個任務,我想在父項目中給它一個連續的數字。

這是我的模型類

我不知道某些事情: 這是否邏輯屬於我的任務模型或在我的項目模型或一個單獨的類/模塊中? 什麼是最好的過濾器。 (before_create,before_validation,驗證)? 因爲如何創建任務有很多方法。在列表中,單獨列出,然後將其附加到列表中... 哪些過濾器可以在我的測試中工作,以便我可以用工廠女孩設置一些假貨......因爲現在FactoryGirl並不總是執行所產生數...

這是我廠

FactoryGirl.define do 
factory :project do 
    name "Hello world" 
end 
trait :with_tasks do 
    ignore do 
     number_of_tasks 3 
    end 
    after :create do |project,evaluator| 
     @project.Factory.create_list :taks, evaluator.number_of_tasks, :project => project 
    end 
end 

什麼是最好的。可靠的方法來生成一個連續的自定義編號取決於在我的規格和生產中工作的項目? 任何最佳實踐提示,將不勝感激。

回答

0

我會保留Task模型中的before_create回調函數,該函數將調用generate_number函數。這應該在Factory女孩身上起作用,如果您使用Factory.create,那麼它會添加數字,但在使用Factory.build時不會。

+0

before_save會在每次保存時執行,對不對?這會覆蓋每次保存 – 2012-08-15 17:07:16

+0

的ID!將更新我的答案 – Solomon 2012-08-15 19:11:13