从原始表单数据创建模型对象 - 是否需要一对一的字段匹配?

时间:2009-05-25 18:27:21

标签: ruby-on-rails webforms model controller

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

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

这需要什么才能发挥作用?

params[:order]和订单模型中的所有字段之间是否需要一对一匹配?

或者params[:order]中的字段可能比实例化订单所需的字段多吗?

2 个答案:

答案 0 :(得分:1)

确实可以减少字段数。

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

答案 1 :(得分:1)

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

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