1

如果我在控制器中这样说:

@order = Order.new(params[:order])

这需要什么?

params[:order]是否需要在 Order 模型中的所有字段之间进行一对一的匹配?

或者可以有params[:order]比实例化订单所需的更多或更少的字段?

4

2 回答 2

1

确实可以有更少的字段。

确保您拥有任何验证所需的所有字段!

于 2009-05-25T18:53:28.877 回答
1

params[:order] 本身应该是一个散列,其中每个键是模型字段的名称。要了解 Rails 如何将表单字段名称转换为 params 哈希,请使用 form_for 帮助器和查看源代码编写一个视图模板。

可以有更多或更少的字段,是的。额外的字段将被忽略。更少的字段不会被复制到实例对象中。您根本不需要任何东西来实例化 ActiveRecord 对象。(对象有效性和保存是另一回事——它们调用验证和 ActiveRecord 回调机制。)

于 2009-05-25T19:02:30.340 回答