このようなネストされたリソースがあります
resources :projects do resources :tasks end
タスクには number という名前のフィールドがあります。タスクを作成するたびに、親プロジェクト内で連番を付けたいと思います。
これは私のモデルクラスです
class Task < ActiveRecord :: Base
belongs_to :project
validate_presence_of :title
before_create :generate_number
private
def generate_number
if project.tasks.nil? || project.tasks.count < 1
self.number = 1
else
self.number = list.topics.count+1
end
end
end
特定のことについて確信が持てません: このロジックは、タスク モデル、プロジェクト モデル、または別のクラス/モジュールに属していますか? フィルタ前のベストは何ですか。(before_create、before_validation、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
終わり
何が最高でしょう。私の仕様と本番環境で機能するプロジェクトに応じて、連続したカスタムタスク番号を生成する信頼できる方法は? ベストプラクティスのヒントをいただければ幸いです。