我有这样的嵌套资源
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、验证)?因为有很多方法可以创建任务。单独使用列表,在列表中,然后将其附加到列表中......哪个过滤器将在我的测试中起作用,这样我就可以设置一些假货,例如工厂女孩......因为现在 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
结尾
什么是最好的。根据在我的规范和生产中工作的项目生成顺序自定义任务编号的可靠方法?任何最佳实践提示将不胜感激。