Method: Sequel::Model::InstanceMethods#save
- Defined in:
- lib/sequel/model/base.rb
#save(opts = OPTS) ⇒ Object
Creates or updates the record, after making sure the record is valid and before hooks execute successfully. Fails if:
-
the record is not valid, or
-
before_save returns false, or
-
the record is new and before_create returns false, or
-
the record is not new and before_update returns false.
If save fails and either raise_on_save_failure or the :raise_on_failure option is true, it raises ValidationFailed or HookFailed. Otherwise it returns nil.
If it succeeds, it returns self.
You can provide an optional list of columns to update, in which case it only updates those columns, or a options hash.
Takes the following options:
- :changed
-
save all changed columns, instead of all columns or the columns given
- :columns
-
array of specific columns that should be saved.
- :raise_on_failure
-
set to true or false to override the current
raise_on_save_failuresetting - :server
-
set the server/shard on the object before saving, and use that server/shard in any transaction.
- :transaction
-
set to true or false to override the current
use_transactionssetting - :validate
-
set to false to skip validation
1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 |
# File 'lib/sequel/model/base.rb', line 1296 def save(opts=OPTS) raise Sequel::Error, "can't save frozen object" if frozen? set_server(opts[:server]) if opts[:server] if opts[:validate] != false unless checked_save_failure(opts){_valid?(true, opts)} raise(ValidationFailed.new(self)) if raise_on_failure?(opts) return end end checked_save_failure(opts){checked_transaction(opts){_save(opts)}} end |