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_failure setting

: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_transactions setting

:validate

set to false to skip validation

Raises:



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