如果我在控制器中这样说:
@order = Order.new(params[:order])
这需要什么?
params[:order]
是否需要在 Order 模型中的所有字段之间进行一对一的匹配?
或者可以有params[:order]
比实例化订单所需的更多或更少的字段?
如果我在控制器中这样说:
@order = Order.new(params[:order])
这需要什么?
params[:order]
是否需要在 Order 模型中的所有字段之间进行一对一的匹配?
或者可以有params[:order]
比实例化订单所需的更多或更少的字段?
确实可以有更少的字段。
确保您拥有任何验证所需的所有字段!
params[:order] 本身应该是一个散列,其中每个键是模型字段的名称。要了解 Rails 如何将表单字段名称转换为 params 哈希,请使用 form_for 帮助器和查看源代码编写一个视图模板。
可以有更多或更少的字段,是的。额外的字段将被忽略。更少的字段不会被复制到实例对象中。您根本不需要任何东西来实例化 ActiveRecord 对象。(对象有效性和保存是另一回事——它们调用验证和 ActiveRecord 回调机制。)