aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/connection_adapters/column.rb
Commit message (Collapse)AuthorAgeFilesLines
* [ci skip] document type_cast_for_writeschneems2014-05-071-0/+2
|
* Coerce strings when reading attributes.Yves Senn2014-02-231-2/+8
|
* Push default_function to superclass to avoid method checkRafael Mendonça França2013-10-141-11/+12
|
* ActiveRecord::ConnectionAdapters::Column.string_to_time method respects ↵kennyj2013-09-251-3/+11
| | | | string with timezone. Closes #12278.
* Stop interpreting SQL 'string' columns as :string type.Ben Woosley2013-08-171-1/+1
| | | | | | | | SQL doesn't have a string type, and interpreting 'string' as text is contrary to at least SQLite3's behavior: "Note that a declared type of 'STRING' has an affinity of NUMERIC, not TEXT." http://www.sqlite.org/datatype3.html
* Remove redundant `string_to_binary` from type-castingVipul A M2013-08-091-10/+0
|
* Removed deprecated method type_cast_code from ColumnNeeraj Singh2013-07-021-24/+0
|
* Per #9999 revert the revert changing so columns are only tested for empty? ↵Sam2013-04-031-4/+4
| | | | | | as opposed to blank? This is both faster and more correct, added tests to make sure this is not reverted again.
* Revert "Merge pull request #9784 from ↵Carlos Antonio da Silva2013-03-181-4/+4
| | | | | | | | | | vipulnsward/change_from_blank_to_empty_on_string" This reverts commit 9c4c05fc82e997b722dec4068c3aa27eaee69eb8, reversing changes made to 4620bdcefd0c88905a005f191496df887877b8f3. Reason: They're not completely interchangeable, since blank? will also check for strings containing spaces.
* change from blank? to empty? on obvious string values to save extra method ↵Vipul A M2013-03-191-4/+4
| | | | calls
* 9253: Before writing a numeric attribute value, ActiveRecord does an implicitRyan Warnick2013-02-131-4/+5
| | | | | | conversion of boolean types (true => 1 and false => 0). If the numeric value being assigned is a BigDecimal, then ActiveRecord compares a BigDecimal to true and false. This is known to be very slow in Ruby 1.9.3.
* Add postgresql range types supportbUg2013-01-231-1/+0
|
* Fix error when assigning NaN to an integer columnTristan Harward2013-01-061-5/+1
| | | | | | | | | 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
* Fix undefined method `to_i' introduced since 3.2.8Jason Stirk2013-01-041-1/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This commit fixes a bug introduced in 96a13fc7 which breaks behaviour of integer fields. 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)
* AR supporting new intrange data type on PostgreSQL >= 9.2Alexey2012-12-161-0/+1
|
* Deprecate obsolete Time to DateTime fallback methodsAndrew White2012-12-111-1/+1
| | | | | | | The Time.time_with_datetime_fallback, Time.utc_time and Time.local_time methods were added to handle the limitations of Ruby's native Time implementation. Those limitations no longer apply so we are deprecating them in 4.0 and they will be removed in 4.1.
* Make caller attribute in deprecation methods optionalAlexey Gaziev2012-10-301-1/+1
|
* Fix bug when Column is trying to type cast boolean values to integer.Rafael Mendonça França2012-10-291-2/+13
| | | | | | | | | | | This can occur if the user is using :integer columns to store boolean values. Now we are handling the boolean values but it still raises if the value can't type cast to integer and is not a boolean. See #7509. Fixes #8067. Conflicts: activerecord/CHANGELOG.md
* Provide a call stack for deprecation warnings where needed.Nikita Afanasenko2012-10-291-2/+3
| | | | It's sometimes hard to quickly find where deprecated call was performed, especially in case of migrating between Rails versions. So this is an attempt to improve the call stack part of the warning message by providing caller explicitly.
* The default value of a text/blob in mysql strict mode should be nilJon Leighton2012-10-191-4/+0
| | | | | | | | | In non-strict mode it is '', but if someone is in strict mode then we should honour the strict semantics. Also, this removes the need for a completely horrible hack in dirty.rb. Closes #7780
* Support for partial inserts.Jon Leighton2012-09-281-0/+4
| | | | | | | | | | | When inserting new records, only the fields which have been changed from the defaults will actually be included in the INSERT statement. The other fields will be populated by the database. This is more efficient, and also means that it will be safe to remove database columns without getting subsequent errors in running app processes (so long as the code in those processes doesn't contain any references to the removed column).
* update ConnectionAdaptar::Column#type_cast_code to be compatible with 3.2 branchThiago Pradi2012-09-131-1/+1
|
* ActiveRecord support to PostgreSQL 9.2 JSON typeDickson S. Guedes2012-09-051-0/+1
| | | | | | | | | This implements the support to encode/decode JSON data to/from database and creating columns of type JSON using a native type [1] supported by PostgreSQL from version 9.2. [1] http://www.postgresql.org/docs/9.2/static/datatype-json.html
* Fix for time type columns with invalid timeAdam Meehan2012-09-051-1/+7
| | | | | | The string_to_dummy_time method was blindly parsing the dummy time string with Date._parse which returns a hash for the date part regardless of whether the time part is an invalid time string.
* Fix occasional microsecond conversion inaccuracyAri Pollak2012-08-151-2/+2
| | | | | | | | | ActiveRecord::ConnectionAdapters::Column#microseconds did an unnecessary conversion to from Rational to float when calculating the integer number of microseconds. Some terminating decimal numbers in base10 are repeating decimal numbers in base2 (the format of float), and occasionally this causes a rounding error. Patch & explanation originally from Logan Bowers.
* load active_support/deprecation in active_support/railsXavier Noria2012-08-021-1/+0
|
* Merge pull request #6192 from ↵Aaron Patterson2012-05-161-0/+1
|\ | | | | | | | | danmcclain/add_inet_and_cidr_types_to_postgresql_adapter Add support for macaddr, inet, and cidr types to PostgreSQL adapter
| * Converts inet and cidr columns to NetAddr::CIDRDan Seaver2012-05-071-0/+1
| |
* | Prevent creating valid time-like objects from blank string from dbEgor Lynko2012-05-051-3/+3
|/ | | | Issue #6045
* Don't type cast values that don't respond to to_i to 1James Sanders & Jason Noble2012-04-301-1/+1
|
* Deprecate Column#type_cast_codeCarlos Antonio da Silva2012-03-291-0/+4
|
* PG column consults oid types when typecastingAaron Patterson2012-02-101-1/+4
|
* string_to_hstore / hstore_to_string, serializingJoel2012-02-081-2/+2
|
* delegate attribute typecasting to the columnAaron Patterson2012-02-061-0/+15
|
* on and ON are type casted to a true boolean columnSantiago Pastorino2012-01-111-2/+2
|
* PostgreSQL hstore types are automatically deserialized from the database.Aaron Patterson2011-12-201-0/+2
|
* handle not only strings in date type castSergey Nartimov2011-12-191-7/+11
|
* Add missing require 'set'Daniel Azuma2011-06-201-0/+2
|
* Year 0 should fall to nil only if month and day are also 0Kirill Radzikhovskyy2011-05-171-1/+1
|
* refactor a bunch of return / if to a case / whenAaron Patterson2011-02-031-22/+22
|
* moving AR::ConnectionAdapters::Column to its own fileAaron Patterson2011-02-011-0/+268