I have controller with action new, and I want it to create ActiveRecord::Base descendant object, and write it into database (without showing it to user).
def new
active_order = current_user.orders.find {|o| o.status > 0 }
active_order = Order.new if active_order.nil?
(...)
end
Order.new creates local object, but my question is — how to make Rails to fill it with default values and write to database?
You can write an unsaved ActiveRecord object instance to the database with the save method:
It won’t fill in the columns automatically, however. If you want to populate it with default values you can do this before calling save:
Or you can pass it in when you call new:
If you want to do something fancier, you can have Rails automatically populate fields when you save by adding something like this to the model: