| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
| |
This reverts commit 921a296a3390192a71abeec6d9a035cc6d1865c8.
|
| |
|
|
|
|
| |
scope.
|
|
|
|
|
|
|
|
| |
Backport #2312.
Fixes #9367.
I also added a test-case to make sure that renaming or removing
a column preserves the primary key.
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Backport #9252.
Conflicts:
activerecord/CHANGELOG.md
activerecord/test/cases/associations/eager_test.rb
The preloader code on 3-2-stable is not based on relations but on option hashes.
I had to modify the original patch and comparing the option hashes could be more
fuzzy than comparing the relations. All the tests passed though.
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
Previously, when `time_zone_aware_attributes` were enabled, after
changing a datetime or timestamp attribute and then changing it back
to the original value, `changed_attributes` still tracked the
attribute as changed. This caused `[attribute]_changed?` and
`changed?` methods to return true incorrectly.
Example:
in_time_zone 'Paris' do
order = Order.new
original_time = Time.local(2012, 10, 10)
order.shipped_at = original_time
order.save
order.changed? # => false
# changing value
order.shipped_at = Time.local(2013, 1, 1)
order.changed? # => true
# reverting to original value
order.shipped_at = original_time
order.changed? # => false, used to return true
end
(cherry picked from commit bc982cbcb34129ea2cfe8aa1f8e0b40e444e68db)
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/attribute_methods/time_zone_conversion.rb
Backport of #9073
Fixes #8898
|
|
|
|
|
|
|
| |
This reverts commit c5451777b038c5e48567f69256986ae42a2cde48.
Conflicts:
activerecord/CHANGELOG.md
|
|
|
|
|
|
|
| |
don't cache invalid subsets when preloading hmt associations
Conflicts:
activerecord/CHANGELOG.md
activerecord/test/cases/associations/eager_test.rb
|
| |
|
|\
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 3-2-sec:
bumping version
remove ruby-prof
Fix issue with attr_protected where malformed input could circumvent protection
fixing call to columns hash. run the damn tests when you backport!
Bump rack dependency to 1.4.5
Merge pull request #9224 from dylanahsmith/bigdecimal-takes-string
Merge pull request #9208 from dylanahsmith/3-2-mysql-quote-numeric
Conflicts:
Gemfile
activerecord/CHANGELOG.md
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| | |
[3.2] active_record: Quote numeric values compared to string columns.
Conflicts:
activerecord/CHANGELOG.md
|
| | |
|
| | |
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backport c517602 to fix #6115
Deleted:
activerecord/lib/active_record/core.rb
Conflicts:
activerecord/test/cases/base_test.rb
|
| |
| |
| |
| |
| |
| | |
`#count` in conjunction with `#uniq` performs distinct count.
Conflicts:
activerecord/CHANGELOG.md
|
|\ \
| | |
| | | |
Backport: Fix pluck when columns/tables are reserved words.
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Backport #7536 to fix #8968.
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/relation/calculations.rb
|
|/ / |
|
| |
| |
| |
| |
| |
| | |
blakesmith/connection_adapters_without_explain_support
Don't run explain on slow queries for database adapters that don't support it
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 8905c1fb496641c3cdb7b3b816ae6d3d4b2c2b73.
Closes #8460
Conflicts:
activerecord/test/cases/dirty_test.rb
|
| |
| |
| |
| | |
This reverts commit 06cc38a2b0d4778746e8a2a2e2b6aa07e1c1c075.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This reverts commit 88a296dccc401da143d90cad54b693ff06bf2b58, reversing
changes made to 666a7e34f553cef4c8878362eafc79c7e3f310c3.
Conflicts:
activerecord/CHANGELOG.md
Reason: this has been resulting in some hard to track bugs and is
introducing a possible breackage in a stable version.
|
| |
| |
| |
| |
| |
| |
| | |
This reverts commit ee439895759b38431ad025f3c234831f30dadcdb.
It would appear that #7661 had unintended consequences to the API. Until
we can sort those out, this should not be in 3.2.x, and wait for 4.0.0.
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Some tests were raising the following error:
Could not log "sql.active_record" event. NoMethodError: undefined method
`type' for nil:NilClass`
Due to the way binds were being logged, the column info was considered
always present, but that is not true for some of the tests listed in the
issue.
Closes #8806.
Conflicts:
activerecord/lib/active_record/log_subscriber.rb
activerecord/test/cases/log_subscriber_test.rb
Conflict resolution:
- Revert ruby 1.9 style hash to support ruby 1.8
- Do not include 8f59ffce into 3-2-stable
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 3-2-sec:
bumping version
CVE-2013-0156: Safe XML params parsing. Doesn't allow symbols or yaml.
* Strip nils from collections on JSON and XML posts. [CVE-2013-0155] * dealing with empty hashes. Thanks Damien Mathieu
Avoid Rack security warning no secret provided
Conflicts:
actionpack/CHANGELOG.md
activerecord/CHANGELOG.md
activesupport/CHANGELOG.md
|
| | |
|
| |
| |
| |
| | |
dealing with empty hashes. Thanks Damien Mathieu
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This is an improvement for issue #8673:
"Comparing a BigDecimal to true/false on write_attribute is slow"
It seems to be an issue with Ruby itself, related to the "coerce" method
being called in TrueClass/FalseClass due to the == condition, triggering
method_missing, then raising a NameError that's later catched.
This issue was also opened in Ruby tracker:
https://bugs.ruby-lang.org/issues/7645.
This refactoring avoid the coerce call by using a case statement, which
gives us better readability as well. A simple benchmark:
----------
require 'benchmark/ips'
require 'bigdecimal'
Benchmark.ips do |x|
x.report("== true") { BigDecimal('3') == true }
x.report("TrueClass") { TrueClass === BigDecimal('3') }
x.report("== 0") { BigDecimal('3') == 0 }
x.report("Numeric") { Numeric === BigDecimal('3') }
end
Calculating -------------------------------------
== true 6427 i/100ms
TrueClass 47297 i/100ms
== 0 35923 i/100ms
Numeric 55530 i/100ms
-------------------------------------------------
== true 75878.5 (±21.6%) i/s - 359912 in 5.004392s
TrueClass 1249547.0 (±13.1%) i/s - 6148610 in 5.035964s
== 0 666856.3 (±13.3%) i/s - 3268993 in 5.013789s
Numeric 1269300.9 (±11.3%) i/s - 6274890 in 5.028458s
----------
Master has a very different implementation, and there are apparently no
similar conversions at this point, it's mainly delegated to the column
type cast, but I'll check if something needs to be changed there as well.
Closes #8673.
|
| |
| |
| |
| |
| |
| |
| | |
Closes #8804 [ci skip]
Conflicts:
activerecord/lib/active_record/scoping/named.rb
|
| |
| |
| |
| | |
prepared_statements as value
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Also covers any non-castable case by returning nil, which
is in-line with the intention of the former implementation,
but covers the odd cases which respond to to_i but raise
an error when it's called, such as NaN, Infinity and -Infinity.
Fixes #8757
Backport of #8781
Conflicts:
activerecord/CHANGELOG.md
activerecord/test/cases/column_test.rb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
This commit fixes a bug introduced in 96a13fc7 which breaks behaviour of
integer fields in 3.2.8.
In 3.2.8, setting the value of an integer field to a non-integer (eg.
Array, Hash, etc.) would default to 1 (true) :
# 3.2.8
p = Post.new
p.category_id = [ 1, 2 ]
p.category_id # => 1
p.category_id = { 3 => 4 }
p.category_id # => 1
In 3.2.9 and above, this will raise a NoMethodError :
# 3.2.9
p = Post.new
p.category_id = [ 1, 2 ]
NoMethodError: undefined method `to_i' for [1, 2]:Array
Whilst at first blush this appear to be sensible, it combines in bad
ways with scoping.
For example, it is common to use scopes to control access to data :
@collection = Posts.where(:category_id => [ 1, 2 ])
@new_post = @collection.new
In 3.2.8, this would work as expected, creating a new Post object
(albeit with @new_post.category_id = 1). However, in 3.2.9 this will
cause the NoMethodError to be raised as above.
It is difficult to avoid triggering this error without descoping before
calling .new, breaking any apps running on 3.2.8 that rely on this
behaviour.
This patch deviates from 3.2.8 in that it does not retain the somewhat
spurious behaviour of setting the attribute to 1. Instead, it explicitly
sets these invalid values to nil :
p = Post.new
p.category_id = [ 1, 2 ]
p.category_id # => nil
This also fixes the situation where a scope using an array will
"pollute" any newly instantiated records.
@new_post = @collection.new
@new_post.category_id # => nil
Finally, 3.2.8 exhibited a behaviour where setting an object to an
integer field caused it to be coerced to "1". This has not been
retained, as it is spurious and surprising in the same way that setting
Arrays and Heshes was :
c = Category.find(6)
p = Post.new
# 3.2.8
p.category_id = c
p.category_id # => 1
# This patch
p.category_id = c
p.category_id # => nil
This commit includes explicit test cases that expose the original issue
with calling new on a scope that uses an Array. As this is a common
situation, an explicit test case is the best way to prevent regressions
in the future.
It also updates and separates existing tests to be explicit about the
situation that is being tested (eg. AR objects vs. other objects vs.
non-integers)
|
|\|
| |
| |
| | |
Latest released tag was not fully merged into the stable branch (missed version bumping)
|
| | |
|
|\|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
* 3-2-sec:
CVE-2012-5664 options hashes should only be extracted if there are extra parameters
updating changelog
updating the changelogs
updating the changelog for the CVE
Add release date of Rails 3.2.9 to documentation
Conflicts:
actionmailer/CHANGELOG.md
actionpack/CHANGELOG.md
activemodel/CHANGELOG.md
activerecord/CHANGELOG.md
activeresource/CHANGELOG.md
activesupport/CHANGELOG.md
railties/CHANGELOG.md
|
| |
| |
| |
| | |
parameters
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Fix #8575
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/attribute_methods/serialization.rb
activerecord/test/cases/serialized_attribute_test.rb
activerecord/test/models/person.rb
|
| |
| |
| |
| |
| |
| |
| |
| | |
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb
activerecord/test/cases/migration/rename_column_test.rb
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Backport of #8500
Closes #8492
Conflicts:
activerecord/test/cases/migrator_test.rb
|
| |
| |
| |
| |
| |
| | |
This can be done using the class attribute cache_timestamp_format
Closes #8195
|
| |
| |
| |
| |
| |
| | |
Increase numeric-timestamp precision to nanoseconds
Conflicts:
activesupport/lib/active_support/core_ext/time/conversions.rb
|
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
When applying default_scope to a class with a where clause, using
update_column(s) could generate a query that would not properly update
the record due to the where clause from the default_scope being applied
to the update query.
class User < ActiveRecord::Base
default_scope where(active: true)
end
user = User.first
user.active = false
user.save!
user.update_column(:active, true) # => false
In this situation we want to skip the default_scope clause and just
update the record based on the primary key. With this change:
user.update_column(:active, true) # => true
Backport of #8436 fix.
Conflicts:
activerecord/CHANGELOG.md
activerecord/lib/active_record/persistence.rb
activerecord/test/cases/persistence_test.rb
|
| |
| |
| |
| |
| |
| | |
Fix #8414. Performance problem with postgresql adapter primary_key function.
Conflicts:
activerecord/lib/active_record/connection_adapters/postgresql/schema_statements.rb
|
| |
| |
| |
| |
| |
| |
| |
| |
| | |
Closes #3313
Conflicts:
activerecord/CHANGELOG.md
activerecord/test/models/developer.rb
|
| |
| |
| |
| |
| |
| |
| |
| | |
AR::Relation#pluck: improve to work with joins
Conflicts:
activerecord/lib/active_record/relation/calculations.rb
activerecord/test/cases/calculations_test.rb
|
| | |
|
| |
| |
| |
| | |
Fix a problem of translate_exception method in a Japanese (non English) environment.
|
| |
| |
| |
| | |
mistakenly getting utf8 collation
|