最佳实践的嵌套属性

时间:2013-07-16 17:04:32

标签: ruby-on-rails activerecord nested-attributes has-many

我有一个模型与另一个模型有嵌套属性。

我的问题是:如何在控制器或模型中调用构建更好的解决方案?

查看该模型:

class ContentType < ActiveRecord::Base
  after_initialize :add_fields
  belongs_to :project
  has_many :field_content_types

  accepts_nested_attributes_for :field_content_types, reject_if: proc {|attributes| attributes['name'].blank?}

  private

  def add_fields
    self.field_content_types.build if new_record?
  end
end

删除模型中的after_initialize并在控制器中添加行

class ContentTypesController < ApplicationController
  def new
    @content_type = ContentType.new
    @content_type.field_content_types.build
  end
end

有一个理由在控制器中设置内置?

1 个答案:

答案 0 :(得分:1)

假设您在询问应该在哪里构建field_content_types,在这种特殊情况下,我认为无论您是在模型还是控制器中构建它都不重要。

经验法则是保持控制器和模型,但构建方法已经非常简洁,从模型构建它不会获得太多

就个人而言,我只是在控制器中构建它。