如果我在控制器中这样说:
@order = Order.new(params[:order])
这需要什么才能发挥作用?
params[:order]
和订单模型中的所有字段之间是否需要一对一匹配?
或者params[:order]
中的字段可能比实例化订单所需的字段多吗?
答案 0 :(得分:1)
确实可以减少字段数。
确保您拥有验证所需的所有字段!
答案 1 :(得分:1)
params [:order]本身应该是一个哈希值,其中每个键都是模型字段的名称。要查看Rails如何将表单字段名称转换为params哈希值,请使用form_for帮助程序和查看源代码编写视图模板。
可以有更多或更少的字段,是的。额外的字段将被忽略。较少的字段不会被复制到实例对象中。您根本不需要任何实例化ActiveRecord对象。 (对象有效性和保存是一个不同的故事 - 它们调用验证和ActiveRecord回调机制。)