我想了解初始化模型嵌套字段的“正确”方法是什么.
假设您有一些模型的嵌套字段:
class User has_one :address accepts_nested_attributes_for :address end
并且您需要初始化这些属性(在这种情况下为地址)以在fields_for调用中使用它们.
到目前为止,我已经想到了三种方法.
首先,对模型进行after_initialize挂钩:
class User after_initialize :init_address protected def init_address address ||= build_address end
然后我们在控制器中进行初始化:
class UsersController def new @user = User.new @user.build_address end end
最后,我们可以使用辅助方法为我们做到这一点:
module FormHelpers def setup_user(user) user.address ||= user.build_address user end end # view <%= form_for setup_user(@user)... %>
对于这种情况,是否有类似标准或“最佳实践”的内容?你是怎么做到的,为什么?