Module: ROM::SQL::Relation::Writing

Included in:
ROM::SQL::Relation
Defined in:
lib/rom/sql/relation/writing.rb

Instance Method Summary collapse

Instance Method Details

#delete(*args, &block) ⇒ Relation

Delete tuples from the relation

Examples:

users.delete # deletes all
users.where(name: 'Jane').delete # delete tuples
                                   from restricted relation

Returns:



77
78
79
# File 'lib/rom/sql/relation/writing.rb', line 77

def delete(*args, &block)
  dataset.delete(*args, &block)
end

#insert(*args, &block) ⇒ Relation

Insert tuple into relation

Examples:

users.insert(name: 'Jane')

Parameters:

  • tuple (Hash)

Returns:



36
37
38
# File 'lib/rom/sql/relation/writing.rb', line 36

def insert(*args, &block)
  dataset.insert(*args, &block)
end

#multi_insert(*args, &block) ⇒ Relation

Multi insert tuples into relation

Examples:

users.multi_insert([{name: 'Jane'}, {name: 'Jack'}])

Parameters:

  • tuples (Array)

Returns:



50
51
52
# File 'lib/rom/sql/relation/writing.rb', line 50

def multi_insert(*args, &block)
  dataset.multi_insert(*args, &block)
end

#update(*args, &block) ⇒ Relation

Update tuples in the relation

Examples:

users.update(name: 'Jane')
users.where(name: 'Jane').update(name: 'Jane Doe')

Returns:



63
64
65
# File 'lib/rom/sql/relation/writing.rb', line 63

def update(*args, &block)
  dataset.update(*args, &block)
end

#upsert(*args, &block) ⇒ Object

Add upsert option (only PostgreSQL >= 9.5) Uses internal Sequel implementation Default - ON CONFLICT DO NOTHING more options: sequel.jeremyevans.net/rdoc-adapters/classes/Sequel/Postgres/DatasetMethods.html#method-i-insert_conflict

Examples:

users.upsert({ name: 'Jane', email: '[email protected]' },
             { target: :email, update: { name: :excluded__name } }


15
16
17
18
19
20
21
22
23
24
# File 'lib/rom/sql/relation/writing.rb', line 15

def upsert(*args, &block)
  if args.size > 1 && args[-1].is_a?(Hash)
    *values, opts = args
  else
    values = args
    opts = EMPTY_HASH
  end

  dataset.insert_conflict(opts).insert(*values, &block)
end