我有一个模型与另一个模型有嵌套属性。
我的问题是:如何在控制器或模型中调用构建更好的解决方案?
查看该模型:
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
有一个理由在控制器中设置内置?
答案 0 :(得分:1)
假设您在询问应该在哪里构建field_content_types
,在这种特殊情况下,我认为无论您是在模型还是控制器中构建它都不重要。
经验法则是保持控制器瘦和模型胖,但构建方法已经非常简洁,从模型构建它不会获得太多
就个人而言,我只是在控制器中构建它。