aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
* Fixing numeric attrs when set to same negative valueDaniel Fox2014-12-234-1/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This bug occurs when an attribute of an ActiveRecord model is an ActiveRecord::Type::Integer type or a ActiveRecord::Type::Decimal type (or any other type that includes the ActiveRecord::Type::Numeric module. When the value of the attribute is negative and is set to the same negative value, it is marked as changed. Take the following example of a Person model with the integer attribute age: class Person < ActiveRecord::Base # age :integer(4) end The following will produce the error: person = Person.new(age: -1) person.age = -1 person.changes => { "age" => [-1, -1] } person.age_changed? => true The problematic line is here: module ActiveRecord module Type module Numeric ... def non_numeric_string?(value) # 'wibble'.to_i will give zero, we want to make sure # that we aren't marking int zero to string zero as # changed. value.to_s !~ /\A\d+\.?\d*\z/ end end end end The regex match doesn't accept numbers with a leading '-'.
* Merge pull request #18158 from YayConnolly/masterSean Griffin2014-12-221-0/+3
|\ | | | | Describe gotcha for 'status' option [ci skip]
| * Describe gotcha for 'status' option [ci skip]J Connolly2014-12-221-0/+3
|/
* Merge pull request #18156 from claudiob/better-record-identifier-testsSean Griffin2014-12-222-0/+55
|\ | | | | Better tests for AV::RecordIdentifier
| * Better tests for AV::RecordIdentifierclaudiob2014-12-232-0/+55
|/ | | | | | | | | | | | | | | | | This commit intends to clarify the scope of ActionView::RecordIdentifier methods `dom_id` and `dom_class`. Most of the current documentation comes from da257eb8 (7 years ago) when the decoupling of ActionView, ActiveRecord and ActiveModel was not a concern. Since then, steps have been taken to reach such decoupling. Therefore I think it's important to show that ActionView::RecordIdentifier **does not strictly depend on the ActiveRecord API**: any class `Post` implementing `post.to_key` and `post.model_name.param_key` will work. This commit adds a test to prove that ActionView::RecordIdentifier methods can also be used on objects that do not subclass ActiveRecord::Base.
* Merge pull request #18147 from andreynering/guides-line-breaks-fixSean Griffin2014-12-222-12/+3
|\ | | | | Do not use line breaks on notes [ci skip]
| * Do not use line breaks on notes [ci skip]Andrey Nering2014-12-222-12/+3
| | | | | | | | References #18138
* | Improve the performance of reading belongs_to associationsSean Griffin2014-12-221-5/+6
| | | | | | | | | | | | | | | | | | | | | | | | `ActiveRecord::Base#[]` has overhead that was introduced in 4.2. The `foo["id"]` working with PKs other than ID isn't really a case that we want to support publicly, but deprecating was painful enough that we avoid it. `_read_attribute` was introduced as the faster alternative for use internally. By using that, we can save a lot of overhead. We also save some overhead by reading the attribute one fewer times in `stale_state`. Fixes #18151
* | Don't perform statement caching for `find` when called from a scopeSean Griffin2014-12-223-1/+32
| | | | | | | | | | | | | | | | If there is a method defined such as `find_and_do_stuff(id)`, which then gets called on an association, we will perform statement caching and the parent ID will not change on subsequent calls. Fixes #18117
* | Don't calculate all in-place changes to determine if attribute_changed?Sean Griffin2014-12-223-1/+24
| | | | | | | | | | | | | | | | | | Calling `changed_attributes` will ultimately check if every mutable attribute has changed in place. Since this gets called whenever an attribute is assigned, it's extremely slow. Instead, we can avoid this calculation until we actually need it. Fixes #18029
* | Don't wrap `create_table` in a transaction for tests which run on MySQLSean Griffin2014-12-221-3/+1
| | | | | | | | PG will warn without it, but mysql2 errors out.
* | Add test missed by a03ea684efc3505647cf0327a501aa2dbb591ad2Sean Griffin2014-12-221-2/+3
| |
* | Use the new `foreign_key` option on `references` in generatorsSean Griffin2014-12-225-14/+20
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Changes `rails g model Post user:references` from def change create_table :posts do |t| t.references :user, index: true end add_foreign_key :posts, :users end to def change create_table :posts do |t| t.references :user, index: true, foreign_key: true end end Changes `rails g migration add_user_to_posts user:references` from def change add_reference :posts, :users, index: true add_foreign_key :posts, :users end to def change add_reference :posts, :users, index: true, foreign_key: true end
* | Add `foreign_key` as an option to `references` for `change_table`Sean Griffin2014-12-223-4/+65
| | | | | | | | | | | | | | | | | | | | | | This has the same comments as 9af90ffa00ba35bdee888e3e1ab775ba0bdbe72c, however it affects the `add_reference` method, and `t.references` in the context of a `change_table` block. There is a lot of duplication of code between creating and updating tables. We should re-evaluate the structure of this code from a high level so changes like this don't need to be made in two places. (Note to self)
* | Convert `add_references` to use kwargsSean Griffin2014-12-221-6/+18
| | | | | | | | | | | | While we still aren't accepting PRs that only make changes like this, it's fine when we're actively working on a method if it makes our lives easier.
* | Add a `foreign_key` option to `references` while creating the tableSean Griffin2014-12-223-5/+94
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Rather than having to do: create_table :posts do |t| t.references :user end add_foreign_key :posts, :users You can instead do: create_table :posts do |t| t.references :user, foreign_key: true end Similar to the `index` option, you can also pass a hash. This will be passed as the options to `add_foreign_key`. e.g.: create_table :posts do |t| t.references :user, foreign_key: { primary_key: :other_id } end is equivalent to create_table :posts do |t| t.references :user end add_foreign_key :posts, :users, primary_key: :other_id
* | Convert `references` to kwargsSean Griffin2014-12-221-7/+17
| | | | | | | | | | | | While we aren't taking PRs with these kinds of changes just yet, they are fine if we're actively working on the method and it makes things easier.
* | Skip byebug on all non-MRI rubies, fix testsSean Griffin2014-12-223-3/+3
| | | | | | | | | | | | The changes in #18149 added tests for the app generator, but only fixed it for the plugin generator (I should have let CI finish though I think it would have failed as an allowed failure).
* | Merge pull request #18149 from arthurnn/byebug_on_mriSean Griffin2014-12-222-2/+2
|\ \ | | | | | | Only add debugger/byebug if on MRI
| * | Only add debugger/byebug if on MRIArthur Neves2014-12-222-2/+2
| | |
* | | Add `force: true` to table created in testsSean Griffin2014-12-221-1/+1
| | | | | | | | | | | | | | | | | | If the test is interrupted in a way that the teardown block fails to run, the tests will fail to run until the table is removed manually without this option.
* | | Correctly handle limit on int4 and int8 types in PGSean Griffin2014-12-222-2/+27
| |/ |/| | | | | | | | | | | | | | | | | | | | | | | | | | | | | PG doesn't register it's types using the `int(4)` format that others do. As such, if we alias `int8` to the other integer types, the range information is lost. This is fixed by simply registering it separately. The other option (which I specifically chose to avoid) is to pass the information of the original type that was being aliased as an argument. I'd rather avoid that, since an alias should truly be treated the same. If we need different behavior for a different type, we should explicitly register it with that, and not have a conditional based on aliasing. Fixes #18144 [Sean Griffin & ysbaddaden]
* | Merge branch 'master' of github.com:rails/railsZachary Scott2014-12-222-2/+2
|\|
| * Use serve_static_files in guides, take 2 [skip ci]Arthur Neves2014-12-221-2/+2
| |
| * Use serve_static_files in guides [skip ci]Arthur Neves2014-12-222-2/+2
| |
* | Remove this section, it adds no real value [ci skip]Zachary Scott2014-12-221-4/+0
|/
* Add subheadings for these sections [ci skip]Zachary Scott2014-12-221-0/+4
|
* I'm sorry but I would rather not link to a 7 year old blog post [ci skip]Zachary Scott2014-12-221-2/+0
|
* Remove this line since we are using Rake to run our tests [ci skip]Zachary Scott2014-12-221-1/+1
|
* s/are edited and rerun/required modifications [ci skip]Zachary Scott2014-12-221-2/+2
|
* document the return of `db:test:prepare`. Closes #18136. [ci skip]Yves Senn2014-12-221-1/+10
| | | | | | This is a doc follow-up to #17739. /cc @zzak
* Correctly handle Float -> BigDecimal with unspecified precisionSean Griffin2014-12-222-1/+14
| | | | Fixes #18122
* Merge pull request #18099 from robsonmarques/fix_active_model_errors_add_docsZachary Scott2014-12-221-2/+2
|\ | | | | Fix inaccurate docs in active_model errors [ci skip]
| * Fix inaccurate docs in active_model errors [ci skip]Robson Marques2014-12-221-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The default value for the argument `message` in `ActiveModel::Errors#add` has a new behavior since ca99ab2481d44d67bc392d0ec1125ff1439e9f94. Before person.errors.add(:name, nil) # => ["is invalid"] After person.errors.add(:name, nil) # => [nil]
* | s/a unobtrusive/an unobtrusive [ci skip]Zachary Scott2014-12-221-1/+1
| |
* | Merge pull request #18105 from andreynering/guides-csrfZachary Scott2014-12-221-1/+8
|\ \ | | | | | | Add note about Ajax and CSRF-Token [ci skip]
| * | Add note about Ajax and CSRF-Token [ci skip]Andrey Nering2014-12-201-1/+8
| | |
* | | Merge pull request #18125 from codeodor/masterZachary Scott2014-12-222-6/+11
|\ \ \ | | | | | | | | Clarify ActiveRecord testing guidelines [ci skip]
| * | | Clarify ActiveRecord testing guidelines [ci skip]Sammy Larbi2014-12-212-6/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. Specify that you need to create the test databases, and that no special Rails command needs to be run to do that. 2. Although the underscore style of `rake test_mysql` works, make the documentation of running the tests in RUNNING_UNIT_TESTS.rdoc consistent with the "Contributing..." guide. 3. Promote "Testing Active Record" to not be a subsection of "Running a Single Test," since it doesn't make sense as a subsection of that.
* | | | Merge pull request #18131 from y-yagi/fix_command_in_plugins_guideZachary Scott2014-12-221-1/+1
|\ \ \ \ | | | | | | | | | | `bin/rake` does not exist in plugin directory [ci skip]
| * | | | `bin/rake` does not exist in plugin directory [ci skip]yuuji.yaginuma2014-12-221-1/+1
| | | | |
* | | | | Better explain number of assertions per test [ci skip]Zachary Scott2014-12-221-1/+1
| | | | |
* | | | | Remove duplicate description of the previous line [ci skip]Zachary Scott2014-12-221-1/+1
| | | | |
* | | | | Fix NOTE for method naming in Ruby and add intro sentence to next section.Zachary Scott2014-12-221-1/+3
| | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | Removed run-on sentence and replace with sectional comments [ci skip]Zachary Scott2014-12-221-2/+2
| | | | |
* | | | | Better explain how test() methods get defined and kill this run-on sentence.Zachary Scott2014-12-221-2/+2
| | | | | | | | | | | | | | | | | | | | [ci skip]
* | | | | We may only look at some of the methods available from TestCase [ci skip]Zachary Scott2014-12-221-1/+1
| | | | |
* | | | | Better explain what `test_helper.rb` is designed for [ci skip]Zachary Scott2014-12-221-1/+1
| |_|_|/ |/| | |
* | | | Merge pull request #18132 from rochefort/fix-typo-nodocYves Senn2014-12-221-1/+1
|\ \ \ \ | | | | | | | | | | Fix typo in nodoc [ci skip]
| * | | | Fix typo in nodocrochefort2014-12-221-1/+1
|/ / / /