gpt4 book ai didi

ruby-on-rails - 在 Rails 表单中初始化嵌套字段的正确方法

转载 作者:数据小太阳 更新时间:2023-10-29 06:55:00 26 4
gpt4 key购买 nike

我想了解什么是初始化模型嵌套字段的“正确”方法。

假设您有一些模型的嵌套字段:

class User

has_one :address
accepts_nested_attributes_for :address
end

并且您需要初始化这些属性(在本例中为 address)以在 fields_for 调用中使用它们。

到目前为止,我已经想到了三种方法。

首先,after_initialize Hook 模型:

class User
after_initialize :init_address

protected
def init_address
address ||= build_address
end

然后我们在 Controller 中进行初始化:

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)... %>

对于这种情况,是否有类似标准或“最佳实践”的东西?你是如何做到的,为什么?

最佳答案

我认为,如果没有父模型,嵌套属性根本没有意义,那么构建和初始化这些嵌套模型应该是父模型的责任。

我不明白为什么 UsersController 应该关心 @user.addresses 是如何构建或初始化的。对我来说,赋予 Controller 这一职责可能意味着在 create 上他应该是解析和构​​建嵌套属性的人(这发生在模型中)。

我会选择第一种方法。

关于ruby-on-rails - 在 Rails 表单中初始化嵌套字段的正确方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8453112/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com