Ruby on rails 在数据库中创建对象而不向用户显示视图
我有一个带有actionRuby 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
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