1

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

我的问题是:如何更好地调用内置控制器或模型的解决方案?

看那个模型:

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

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

4

1 回答 1

1

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

经验法则是保持控制器而模型,但构建方法已经如此简洁,以至于您不会从模型构建它获得太多收益。

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

于 2013-07-16T17:55:04.127 回答