Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 在数据库中创建对象而不向用户显示视图_Ruby On Rails_Controller - Fatal编程技术网

Ruby on rails 在数据库中创建对象而不向用户显示视图

Ruby on rails 在数据库中创建对象而不向用户显示视图,ruby-on-rails,controller,Ruby On Rails,Controller,我有一个带有actionnew的控制器,我希望它创建ActiveRecord::Base后代对象,并将其写入数据库(而不向用户显示) Order.new创建本地对象,但我的问题是——如何让Rails用默认值填充它并写入数据库?您可以使用Order.Create(…)创建一个新对象并将其保存在数据库中(当然假设Order是ActiveBase的子对象)您可以使用保存方法将未保存的ActiveRecord对象实例写入数据库: active_order = Order.new if active_or

我有一个带有action
new
的控制器,我希望它创建ActiveRecord::Base后代对象,并将其写入数据库(而不向用户显示)


Order.new
创建本地对象,但我的问题是——如何让Rails用默认值填充它并写入数据库?

您可以使用
Order.Create(…)
创建一个新对象并将其保存在数据库中(当然假设Order是ActiveBase的子对象)

您可以使用保存方法将未保存的ActiveRecord对象实例写入数据库:

active_order = Order.new if active_order.nil?
active_order.save
但是,它不会自动填充列。如果要使用默认值填充,可以在调用save之前执行此操作:

active_order = Order.new if active_order.nil?
active_order.field_name = "foo"
active_order.save
或者,您可以在调用new时将其传入:

active_order = Order.new(:field_name => "foo") if active_order.nil?
active_order.save
如果您想做一些更有趣的事情,您可以在保存时通过向模型中添加以下内容使Rails自动填充字段:

before_validation_on_create :set_default_values

def set_default_values
  field_name = "foo" if field_name.blank?
end

进入
active\u order=order.new(如果是active\u order.nil?
的快捷方式是
active\u order\124;=order.new
before_validation_on_create :set_default_values

def set_default_values
  field_name = "foo" if field_name.blank?
end