aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord
Commit message (Collapse)AuthorAgeFilesLines
...
* | | | Add a test to ensure `serialize` persists `nil` as `NULL`Sean Griffin2015-06-121-0/+8
| | | |
* | | | Don't crash when mutating attributes in a getterSean Griffin2015-06-123-1/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If a getter has side effects on the DB, `changes_applied` will be called twice. The second time will try and remove the changed attributes cache, and will crash because it's already been unset. This also demonstrates that we shouldn't assume that calling getters won't change the value of `changed_attributes`, and we need to clear the cache if an attribute is modified. Fixes #20531.
* | | | Merge pull request #20480 from senny/test_runnerYves Senn2015-06-1278-223/+246
|\ \ \ \ | | | | | | | | | | use our own runner for Rails framework components `bin/test`
| * | | | select the AR adapter through `bin/test`.Yves Senn2015-06-111-0/+16
| | | | |
| * | | | make it possible to run AR tests with bin/testYves Senn2015-06-1178-223/+230
| | | | |
* | | | | Merge pull request #20226 from EpicH0liday/reversible-remove-foreign-keyYves Senn2015-06-124-2/+50
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Make remove_foreign_key reversible Conflicts: activerecord/CHANGELOG.md
| * | | | | Add an invert method for remove_foreign_keyAster Ryan2015-06-114-2/+51
| | | | | |
* | | | | | Add enum prefix/suffix option to enum definitionIgor Kapkov2015-06-126-6/+104
|/ / / / / | | | | | | | | | | | | | | | Fixes #17511 and #17415
* | | | | Add a missing test case for the persistence behavior of `serialize`Sean Griffin2015-06-111-0/+13
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | `serialize` makes the contract that if it is given a class name, it will never return something other than an instance of that class. This means that it must cast `nil` to the empty form of that object. As such, we should then persist empty forms of that object as `nil`. While this is techincally under the contract of ``` model.attribute = value assert_equal model.attribute, model.tap(&:save).reload.attribute ``` which we can't actually test universally without property based testing, it has come up more than once and is worth calling out specifically since we aren't looking to change it.
* | | | | Credit the author of #20515 in the previous commitSean Griffin2015-06-111-1/+1
| | | | | | | | | | | | | | | | | | | | [Sean Griffin & jmondo]
* | | | | Correctly handle array columns with defaults in the schema dumperSean Griffin2015-06-114-0/+17
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | If the subtype provides custom schema dumping behavior, we need to defer to it. We purposely choose not to handle any values other than an array (which technically should only ever be `nil`, but I'd rather code defensively here). Fixes #20515.
* | | | | Merge pull request #20516 from kares/patch-2Matthew Draper2015-06-121-1/+1
| | | | | | | | | | | | | | | | | | | | change AR clear order in ActionDisplatch::Reloader hook
* | | | | Merge pull request #20497 from dcrec1/masterSean Griffin2015-06-111-2/+1
|\ \ \ \ \ | |/ / / / |/| | | | refactor ActiveRecord's #become by removing not needed code
| * | | | refactor ActiveRecord's #become by simplifying codeDiego Carrion2015-06-101-2/+1
| | | | |
* | | | | Use block variable instead of globalRoque Pinel2015-06-091-2/+2
|/ / / /
* | | | Merge pull request #20437 from pwnall/abstract_fixturesRafael Mendonça França2015-06-095-1/+31
|\ \ \ \ | | | | | | | | | | Fix crash when loading fixture with belongs_to association defined in abstract base class
| * | | | Fix crash when loading fixture with belongs_to association defined in ↵Victor Costan2015-06-045-1/+31
| | | | | | | | | | | | | | | | | | | | abstract base class.
* | | | | Merge pull request #20460 from mtsmfm/stop-to-s-for-fixture-timestampsSean Griffin2015-06-071-1/+0
|\ \ \ \ \ | | | | | | | | | | | | Stop `to_s(:db)` for fixture's timestamp
| * | | | | Stop `to_s(:db)` for fixture's timestampFumiaki MATSUSHIMA2015-06-071-1/+0
| | | | | | | | | | | | | | | | | | | | | | | | Time instance will be casted so we don't have to do `to_s(:db)`.
* | | | | | Merge pull request #20448 from sgrif/sg-postgresql-point-typeSean Griffin2015-06-076-11/+189
|\ \ \ \ \ \ | | | | | | | | | | | | | | Return a `Point` object from the PG Point type
| * | | | | | Return a `Point` object from the PG Point typeSean Griffin2015-06-056-11/+189
| | |/ / / / | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This introduces a deprecation cycle to change the behavior of the default point type in the PostgreSQL adapter. The old behavior will continue to be available for the immediate future as `:legacy_point`. The current behavior of returning an `Array` causes several problems, the most significant of which is that we cannot differentiate between an array of points, and a point itself in the case of a column with the `point[]` type. The attributes API gives us a reasonable way to have a proper deprecation cycle for this change, so let's take advantage of it. If we like this change, we can also add proper support for the other geometric types (line, lseg, box, path, polygon, and circle), all of which are just aliases for string today. Fixes #20441
* | | | | | A few documentation tweaks [ci skip]Robin Dupret2015-06-071-1/+1
| |/ / / / |/| | | | | | | | | | | | | | [Robin Dupret & Shunsuke Aida]
* | | | | Merge branch 'master' of github.com:rails/docrailsVijay Dev2015-06-051-2/+2
|\ \ \ \ \ | |/ / / / |/| | | |
| * | | | [ci skip] Upcase `SAVEPOINT`yui-knk2015-05-121-1/+1
| | | | |
| * | | | [ci skip] Fix comment indentyui-knk2015-05-121-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | See commit 890da514, this is not intended. So fix indent.
* | | | | Apply Active Record suppression to all savesGeorge Claghorn2015-06-042-3/+33
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It was not being applied to creates and updates attempted through the non-bang save methods. This means that, for example, creation of records for singular associations through the `create_*` methods was not appropriately ignored in .suppress blocks.
* | | | | [ci skip] fix the `collection.clear` guideRoque Pinel2015-06-021-7/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Improve the guide about `has_many` `collection.clear` to indicate the behavior for each dependent strategy according to `collection.delete_all`. Based on #17179, I changed the `collection.delete` docs to also clarify the default strategy for each `hm` and `hm:t` associations. Fixes #20170.
* | | | | Skip test that fails from outdated sqlite3 on travisSean Griffin2015-06-021-7/+9
| | | | |
* | | | | Fix postgresql DISTINCT requirement in pluck testKevin Deisz2015-06-021-2/+2
| | | | |
* | | | | Merge pull request #20405 from manish-shrivastava/masterRafael Mendonça França2015-06-011-1/+1
|\ \ \ \ \ | | | | | | | | | | | | Fixed typos in rails guide
| * | | | | Fixed typos in guidemanish-shrivastava2015-06-011-1/+1
| | | | | |
* | | | | | Merge pull request #20362 from kddeisz/enumerable_pluckRafael Mendonça França2015-06-012-0/+25
|\ \ \ \ \ \ | |/ / / / / |/| | | | | Allow Enumerable#pluck to take a splat.
| * | | | | Allow Enumerable#pluck to take a splat.Kevin Deisz2015-05-292-0/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This allows easier integration with ActiveRecord, such that AR#pluck will now use Enumerable#pluck if the relation is loaded, without needing to hit the database.
* | | | | | Merge pull request #20386 from yoongkang/circular_importRafael Mendonça França2015-06-011-1/+0
|\ \ \ \ \ \ | | | | | | | | | | | | | | Fix circular import warning on build
| * | | | | | Fix circular import warning on buildYoong Kang Lim2015-05-311-1/+0
| | | | | | |
* | | | | | | Map :bigint as NUMBER(19) sql_type by using `:limit => 19` for OracleYasuo Honda2015-06-012-2/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | since NUMBER(8) is not enough to store the maximum number of bigint. Oracle NUMBER(p,0) as handled as integer because there is no dedicated integer sql data type exist in Oracle database. Also NUMBER(p,s) precision can take up to 38. p means the number of digits, not the byte length. bigint type needs 19 digits as follows. $ irb 2.2.2 :001 > limit = 8 => 8 2.2.2 :002 > maxvalue_of_bigint = 1 << ( limit * 8 - 1) => 9223372036854775808 2.2.2 :003 > puts maxvalue_of_bigint.to_s.length 19 => nil 2.2.2 :004 >
* | | | | | | minor formatting changes in changelogs. [ci skip]Yves Senn2015-05-311-6/+6
|/ / / / / /
* | | | | | Ensure symbols passed to `select` are always quotedSean Griffin2015-05-303-9/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Our general contract in Active Record is that strings are assumed to be SQL literals, and symbols are assumed to reference a column. If a from clause is given, we shouldn't include the table name, but we should still quote the value as if it were a column. Upon fixing this, the tests were still failing on SQLite. This was because the column name being returned by the query was `"\"join\""` instead of `"join"`. This is actually a bug in SQLite that was fixed a long time ago, but I was using the version of SQLite included by OS X which has this bug. Since I'm guessing this will be a common case for contributors, I also added an explicit check with a more helpful error message. Fixes #20360
* | | | | | Add docs and changelog entry for 73aab03 [ci skip]Sean Griffin2015-05-302-1/+15
| | | | | |
* | | | | | Add CHANGELOG entry for #17654 [ci skip]Ryuta Kamizono2015-05-301-0/+13
|/ / / / /
* | | | | Merge pull request #20364 from ernie/update-serialize-docsSean Griffin2015-05-291-0/+9
|\ \ \ \ \ | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Update docs for ActiveRecord `serialize` [ci skip]
| * | | | | Update docs for ActiveRecord `serialize`Ernie Miller2015-05-291-0/+9
|/ / / / / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For certain column types, using `serialize` is unnecessary, or the user may get unexpected contents back from the DB adapter (which is handling some basic deserialization for them). Call this out in the documentation. For background, see: https://gist.github.com/ernie/33f75f2294885b9806f9 https://twitter.com/erniemiller/status/604262907442905090
* | | | | Fix the shadowing warning for `reflection`Roque Pinel2015-05-281-2/+2
| | | | |
* | | | | Persist user provided default values, even if unchangedSean Griffin2015-05-284-27/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a usability change to fix a quirk from our definition of partial writes. By default, we only persist changed attributes. When creating a new record, this is assumed that the default values came from the database. However, if the user provided a default, it will not be persisted, since we didn't see it as "changed". Since this is a very specific case, I wanted to isolate it with the other quirks that come from user provided default values. The number of edge cases which are presenting themselves are starting to make me wonder if we should just remove the ability to assign a default, in favor of overriding `initialize`. For the time being, this is required for the attributes API to not have confusing behavior. We had to delete one test, since this actually changes the meaning of `.changed?` on Active Record models. It now specifically means `changed_from_database?`. While I think this will make the attributes API more ergonomic to use, it is a subtle change in definition (though not a backwards incompatible one). We should probably figure out the right place to document this. (Feel free to open a PR doing that if you're reading this). /cc @rafaelfranca @kirs @senny This is an alternate implementation of #19921. Close #19921. [Sean Griffin & Kir Shatrov]
* | | | | Allow proc defaults with the Attributes APISean Griffin2015-05-283-1/+36
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This is a variant implementation of the changes proposed in #19914. Unlike that PR, the change in behavior is isolated in its own class. This is to prevent wonky behavior if a Proc is assigned outside of the default, and it is a natural place to place the behavior required by #19921 as well. Close #19914. [Sean Griffin & Kir Shatrov]
* | | | | Merge pull request #20331 from arunagw/arunagw-remove-unused-package-tasksRafael Mendonça França2015-05-281-7/+0
|\ \ \ \ \ | |_|_|_|/ |/| | | | Remove unused package tasks
| * | | | Remove unused package tasksArun Agrawal2015-05-281-7/+0
| | | | | | | | | | | | | | | | | | | | We are using `all:build` now.
* | | | | Give credit to extra contributor for Base.reload fixShane Hender2015-05-281-2/+2
|/ / / /
* | | | Merge pull request #20196 from huoxito/preload-association-and-mergesRafael Mendonça França2015-05-282-2/+50
|\ \ \ \ | | | | | | | | | | Properly append preload / includes args on Merger
| * | | | Properly append preload / includes args on MergerWashington Luiz2015-05-282-2/+50
| | |_|/ | |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Couldn't find other way to get the association name from a given class other than looping through `reflect_on_all_associations` reflections .. Noticed this one while looking at this example: ```ruby class Product < ActiveRecord::Base has_many :variants has_many :translations end class Translation < ActiveRecord::Base belongs_to :product end class Variant < ActiveRecord::Base belongs_to :product end class BugTest < Minitest::Test def test_merge_stuff product = Product.create! name: 'huhu' variant = Variant.create! product_id: product.id Translation.create! locale: 'en', product_id: product.id product_relation = Product.all .preload(:translations) .joins(:translations) .merge(Translation.where(locale: 'en')) .where(name: 'huhu') assert_equal variant, Variant.joins(:product).merge(product_relation).first end end ```