after_create回调和外部模型 - 什么是好的做法?

时间:2013-07-12 18:43:44

标签: ruby-on-rails

我有两个模型BoardCategory(使用祖先宝石的树结构)和has_many / belongs_to关系。

当我创建新的Board实例时,我自动想要为它创建根类别。我用Board after_save回调来做。

after_create do 
  categories.create(name: "Main Category", description: nil)
end

在我的另一个问题中,我得到了建议:

  

在外部模型/类上使用回调不是好习惯。   类别在董事会之外,因此董事会不应该调用类别   这是一个私人空间的回调。相反,更好   方法是将根类别添加到BoardsController的板中   #创建

但另一方面,我听说过脂肪模型/皮肤控制器原理。 那么在这种情况下,逻辑的良好实践是什么?

1 个答案:

答案 0 :(得分:0)

您可以使用observers

Observer classes respond to life cycle callbacks to implement trigger-like behavior outside the original class. This is a great way to reduce the clutter that normally comes when the model class is burdened with functionality that doesn't pertain to the core responsibility of the class