update_all
 
  - 1.0.0
- 1.1.6
- 1.2.6
- 2.0.3
- 2.1.0
- 2.2.1
- 2.3.8
- 3.0.0 (0)
- 3.0.9 (-3)
- 3.1.0 (16)
- 3.2.1 (0)
- 3.2.8 (0)
- 3.2.13 (0)
- 4.0.2 (-38)
- 4.1.8 (0)
- 4.2.1 (6)
- 4.2.7 (0)
- 4.2.9 (0)
- 5.0.0.1 (-3)
- 5.1.7 (6)
- 5.2.3 (0)
- 6.0.0 (8)
- 6.1.3.1 (2)
- 6.1.7.7 (0)
- 7.0.0 (0)
- 7.1.3.2 (16)
- 7.1.3.4 (0)
- What's this?
update_all(updates)
  public
  Updates all records in the current relation with details given. This method constructs a single SQL UPDATE statement and sends it straight to the database. It does not instantiate the involved models and it does not trigger Active Record callbacks or validations. Values passed to `update_all` will not go through ActiveRecord’s type-casting behavior. It should receive only values that can be passed as-is to the SQL database.
Parameters
- 
updates - A string, array, or hash representing the SET part of an SQL statement. 
Examples
# Update all customers with the given attributes Customer.update_all wants_email: true # Update all books with 'Rails' in their title Book.where('title LIKE ?', '%Rails%').update_all(author: 'David') # Update all books that match conditions, but limit it to 5 ordered by date Book.where('title LIKE ?', '%Rails%').order(:created_at).limit(5).update_all(author: 'David')
 openface -  
    March 23, 2011
 openface -  
    March 23, 2011 
    
  Timestamps
Note that ActiveRecord will not update the timestamp fields (updated_at/updated_on) when using update_all().
 boblin -  
    December 10, 2010 - (>= v3.0.0)
 boblin -  
    December 10, 2010 - (>= v3.0.0)
    
  complex conditions
If you need add complex conditions you can use this:
Model.where(:foo => 'bar').where(:attr => 1).update_all("author = 'David'")
 jamesconant -  
    October  1, 2013
 jamesconant -  
    October  1, 2013 
    
  Update multiple attributes with raw sql
You can update multiple attributes with sql for each record being updated by using the following syntax:
example
Model.update_all("foo = 'bar', baz = 'bat'")
 codesnik -  
    June 17, 2011
 codesnik -  
    June 17, 2011 
    
  bug's fixed, though
in 3.1.0. it works in sqlite3 even, via nested query
but 3.0.3, 3.0.7-9 all broken
 codesnik -  
    June 15, 2011
 codesnik -  
    June 15, 2011 
    
  bug?
beware, update_all silently ignores :limit and :order option in 3.0.8.
I’ve fixed my code temporarily with
update_all "foo=1 where #{myscope.where_values} limit 1"

 RSpec
RSpec Ruby on Rails
Ruby on Rails Ruby
Ruby 
   
   
    
     
   
   
   
    
    
     
    