aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/lib/active_record/attribute_methods/primary_key.rb
Commit message (Collapse)AuthorAgeFilesLines
* Define id_was to get the previous value of the primary keyRafael Mendonça França2014-08-061-1/+7
| | | | | | | | | Currently when we call id_was and we have a custom primary key name Active Record will return the current value of the primary key. This make impossible to correctly do an update operation if you change the id. Fixes #16413
* Move writing unknown column exception to null attributeSean Griffin2014-06-261-5/+2
| | | | | | Making this change revealed several subtle bugs related to models with no primary key, and anonymous classes. These have been fixed as well, with regression tests added.
* Use a conditional rather than early return in `id`Sean Griffin2014-06-121-3/+4
|
* Fix performance regression on preloading HABTM associationsSean Griffin2014-06-121-0/+1
| | | | | | | | | | | We'd spend a lot of time calling `hash` and `eql?` on the join model, which has no primary key. Calling `id` with no primary key is a really slow way to get back `nil`, so we can improve the performance there. However, even with the escape clause, we *still* weren't getting high enough performance, as we were checking the primary key too much. `hash` will always return `nil.hash` for records with no id, and `==` will always return `false`. We can optimize those cases in the HABTM join model.
* safely publish columns and columns hash infoAaron Patterson2013-03-141-1/+1
|
* Reduced memory leak problem in transactions by lazily updating AR objects ↵wangjohn2013-02-201-0/+5
| | | | with new transaction state. If AR object has a callback, the callback will be performed immediately (non-lazily) so the transaction still has to keep records with callbacks.
* change unless !blank? to if blank? in get_primary_keyAngelo capilleri2013-01-081-1/+1
|
* update AR/attribute_methods documentation [ci skip]Francesco Rodriguez2012-09-211-11/+15
|
* Set primary key with id= only if primary key existsGuillermo Iguaran2012-09-161-1/+1
|
* Remove mass assignment security from ActiveRecordGuillermo Iguaran2012-09-161-2/+1
|
* much code can be deleted thanks to @tenderlove's refactoringJon Leighton2012-03-281-6/+0
|
* Remove unusused variablesJon Leighton2012-03-041-3/+2
|
* move id_before_type_cast to PrimaryKey moduleSergey Nartimov2012-02-161-1/+10
|
* handle id attribute in PrimaryKey moduleSergey Nartimov2012-02-111-0/+6
|
* Expanded rdoc about primary keys being protected from mass assignment. Joost Baaij2012-01-061-1/+2
| | | People need to make sure they are generated internally or added to attr_accessible so they can be mass assigned (for instance, from an import job).
* remove deprecated set and original methods for table_name, primary_key, etcSergey Nartimov2011-12-211-9/+0
|
* Fix the build on postgres. Note: we should probably actually make schema ↵Jon Leighton2011-12-161-1/+1
| | | | mutations bust the cache.
* Don't store defaults in the schema cacheJon Leighton2011-12-161-2/+2
|
* Cache columns at the model level.Jon Leighton2011-12-161-2/+0
| | | | Allows two models to use the same table but have different primary keys.
* Fix #3987.Jon Leighton2011-12-151-0/+2
|
* Use a separate module for 'external' attribute methods.Jon Leighton2011-12-141-3/+3
|
* use the schema cache when asking for the primary keyAaron Patterson2011-12-121-1/+1
|
* Revert "Roflscaling!" (for now)Jon Leighton2011-12-021-2/+2
| | | | | | | | This reverts commit f6b5046305d43c5f64bcb6fed0e44f7bca99a603. Fear not, the roflscale will return when I have a bit more time and figure out a better way to do it. (In particular, a way that doesn't break the build.)
* Roflscaling!Jon Leighton2011-12-011-2/+2
| | | | | Don't prefix the name with attribute_. Avoids a string allocation on read_attribute, which is a bit faster.
* Add test for read_attribute(:id) with non-standard PK.Jon Leighton2011-12-011-0/+14
| | | | | | | | Also make it actually work. It slows down all read_attribute accesses to map 'id' to whatever the PK actually is, inside read_attribute. So instead make sure the necessary methods are defined and that they redirect wherever they need to go.
* Get rid of the underscore versions of attribute methods!Jon Leighton2011-12-011-2/+1
| | | | This makes me happy!
* If the table behind has no primary key, do not ask again and just return nil.Julius de Bruijn2011-11-301-1/+2
|
* Use inheritance to avoid special-case code for the 'id' methodJon Leighton2011-11-301-0/+20
|
* #id is an alias for whatever the primary key isJon Leighton2011-11-301-1/+1
|
* Deprecate set_primary_key in favour of self.primary_key=Jon Leighton2011-11-291-20/+26
|
* Revert "Raise error on unknown primary key."Jon Leighton2011-10-051-7/+0
| | | | This reverts commit ee2be435b1e5c0e94a4ee93a1a310e0471a77d07.
* Raise error on unknown primary key.Jon Leighton2011-10-051-0/+7
| | | | | If we don't have a primary key when we ask for it, it's better to fail fast. Fixes GH #2307.
* Don't require a DB connection when setting primary key.Jon Leighton2011-09-261-1/+0
| | | | Closes #2807.
* Revert "to_key on a destroyed model should return nil". Closes #2440Santiago Pastorino2011-08-051-3/+2
| | | | This reverts commit c5448721b5054b8a467958d60427fdee15eac604.
* to_key on a destroyed model should return nilSantiago Pastorino2011-07-091-1/+1
|
* Remove trailing white-spacesGuillermo Iguaran2011-06-051-1/+1
|
* Quote find_in_batches ORDER BY clause [#6620 state:resolved]Andrew White2011-03-291-1/+12
|
* primary keys should not be cleared on cache clear, fixing oracle testsAaron Patterson2011-02-081-0/+1
|
* stop redifining methods on every call to set_primary_keyAaron Patterson2010-12-241-4/+11
|
* returning id (for some yet to be discovered reason)Aaron Patterson2010-12-201-1/+1
|
* define_attr_method must serialize nil correctlyAaron Patterson2010-12-201-2/+6
|
* if there is no base name, we cannot determine a primary keyAaron Patterson2010-12-201-2/+4
|
* remove some lasignsAaron Patterson2010-12-201-6/+6
|
* use persisted? instead of new_record? wherever possibleDavid Chelimsky2010-11-091-3/+4
| | | | | | | | | | | - persisted? is the API defined in ActiveModel - makes it easier for extension libraries to conform to ActiveModel APIs without concern for whether the extended object is specifically ActiveRecord [#5927 state:committed] Signed-off-by: Santiago Pastorino <santiago@wyeworks.com>
* Revert "Makes AR use AMo to_key implementation"Santiago Pastorino2010-08-151-0/+6
| | | | This reverts commit 36a84a4f15f29b41c7cac2f8de410055006a8a8d.
* Makes AR use AMo to_key implementationSantiago Pastorino2010-08-131-6/+0
| | | | [#5249]
* Make sure valid? preceives the context as in ActiveModel API (ht: Carlos ↵José Valim2010-05-101-1/+1
| | | | Antonio)
* Fix dom_id for ActiveRecord [#4296 state:resolved]José Valim2010-03-301-16/+6
|
* Add to_key and to_param methods to ActiveModel::Conversion.José Valim2010-02-211-1/+1
|
* AMo #key is now #to_key and CI is probably happysnusnu2010-02-201-3/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Obviously #key is a too common name to be included in the AMo interface, #to_key fits better and also relates nicely to #to_param. Thx wycats, koz and josevalim for the suggestion. AR's #to_key implementation now takes customized primary keys into account and there's a testcase for that too. The #to_param AMo lint makes no assumptions on how the method behaves in the presence of composite primary keys. It leaves the decision wether to provide a default, or to raise and thus signal to the user that implementing this method will need his special attention, up to the implementers. All AMo cares about is that #to_param is implemented and returns nil in case of a new_record?. The default CompliantObject used in lint_test provides a naive default implementation that just joins all key attributes with '-'. The #to_key default implementation in lint_test's CompliantObject now returns [id] instead of [1]. This was previously causing the (wrong) tests I added for AR's #to_key implementation to pass. The #to_key tests added with this patch should be better. The CI failure was caused by my lack of knowledge about the test:isolated task. The tests for the record_identifier code in action_controller are using fake non AR models and I forgot to stub the #to_key method over there. This issue didn't come up when running the test task, only test:isolated revealed it. This patch fixes that. All tests pass isolated or not, well, apart from one previously unpended test in action_controller that is unrelated to my patch.