1. 10 5月, 2013 4 次提交
    • J
      32a5cad1
    • D
      Don't try to EXPLAIN select_db calls · 1cc63e94
      Daniel Schierbeck 提交于
      1cc63e94
    • B
      Fix that #exists? can produce invalid SQL: "SELECT DISTINCT DISTINCT" · 15d6e4dc
      Ben Woosley 提交于
      The combination of a :uniq => true association and the #distinct call
      in #construct_limited_ids_condition combine to create invalid SQL, because
      we're explicitly selecting DISTINCT, and also sending #distinct on to AREL,
      via the relation#distinct_value.
      
      Rather than build a select distinct clause in #construct_limited_ids_condition,
      I set #distinct! and pass just the columns into the select statement.
      This requires introducing a #columns_for_distinct method to return the
      select columns but not the statement itself.
      15d6e4dc
    • J
      Set the inverse when association queries are refined · d7abe91c
      Jon Leighton 提交于
      Suppose Man has_many interests, and inverse_of is used.
      
      Man.first.interests.first.man will correctly execute two queries,
      avoiding the need for a third query when Interest#man is called. This is
      because CollectionAssociation#first calls set_inverse_instance.
      
      However Man.first.interests.where("1=1").first.man will execute three
      queries, even though this is obviously a subset of the records in the
      association.
      
      This is because calling where("1=1") spawns a new Relation object from
      the CollectionProxy object, and the Relation has no knowledge of the
      association, so it cannot set the inverse instance.
      
      This commit solves the problem by making relations spawned from
      CollectionProxies return a new Relation subclass called
      AssociationRelation, which does know about associations. Records loaded
      from this class will get the inverse instance set properly.
      
      Fixes #5717.
      
      Live commit from La Conf! 
      d7abe91c
  2. 09 5月, 2013 1 次提交
    • N
      extracted piece of code into a method · fdba949b
      Neeraj Singh 提交于
      In order to fix #10421 I need to enable merge to take an option
      so that relations could be merged without making the last where
      condition to win.
      
      That fix would forever reside in 4-0-stable branch and would not be
      merged to master since using scope without lambda has been deprecated.
      
      In this commit I have extracted code into a method and I think it
      makes code look better. Hence the request to merge it in both
      master and 4-0-stable.
      
      If there is any concern then this code can be merged only in
      4-0-stable and that would be fine too.
      fdba949b
  3. 08 5月, 2013 2 次提交
  4. 07 5月, 2013 4 次提交
    • P
      Handle other pk types in PostgreSQL gracefully. · 0e00c6b2
      Patrick Robertson 提交于
      In #10410 it was noted that you can no longer create PK's with the
      type of bigserial in PostgreSQL in 4.0.0.rc1. This is mostly
      because the newer adapter is checking for column type with the
      id column instead of just letting it pass through like it did
      before.
      
      Side effects:
      You may just create a PK column of a type that you really don't
      want to be your PK. As far as I can tell this was allowed in 3.2.X
      and perhaps an exception should be raised if you try and do
      something extremely dumb.
      0e00c6b2
    • B
      Confirm a record has not already been destroyed before decrementing · 228720ef
      Ben Tucker 提交于
      counter cache
      
      At present, calling destroy multiple times on the same record results
      in the belongs_to counter cache being decremented multiple times. With
      this change the record is checked for whether it is already destroyed
      prior to decrementing the counter cache.
      228720ef
    • Z
      Fix bug in ActiveRecord::Sanitization#sanitize_sql_hash_for_conditions · a6bc35c8
      Zach Ohlgren 提交于
      Fixing CHANGLOG description
      
      Remove extra line.
      
      Remove blank lines.
      a6bc35c8
    • N
      raise IrreversibleMigration if no column given · 3771e4d5
      Neeraj Singh 提交于
      fixes #10419
      
      Following code should raise  IrreversibleMigration. But the code was
      failing since options is an array and not a hash.
      
      def change
        change_table :users do |t|
          t.remove_index [:name, :email]
        end
      end
      
      Fix was to check if the options is a Hash before operating on it.
      3771e4d5
  5. 05 5月, 2013 1 次提交
  6. 04 5月, 2013 1 次提交
  7. 03 5月, 2013 2 次提交
  8. 02 5月, 2013 5 次提交
    • M
    • J
      destroys association records before saving/inserting new association records · 483c301e
      Johnny Holton 提交于
      fixes bug introduced by  #3329
      These are the conditions necessary to reproduce the bug:
      - For an association, autosave => true.
      - An association record is being destroyed
      - A new association record is being created.
      - There is a unique index one of the association's fields.
      - The record being created has the same value as the record being
      destroyed on the indexed field.
      
      Before, the deletion of records was postponed until after all
      insertions/saves.  Therefore the new record with the identical value in
      the indexed field caused a non-unique value error to be thrown at the database
      level.
      
      With this fix, the deletions happen first, before the insertions/saves.
      Therefore the record with the duplicate value is gone from the database
      before the new record is created, thereby avoiding the non-uniuqe value
      error.
      483c301e
    • C
      14a75a54
    • G
      Handle aliased attributes in ActiveRecord::Relation. · 54122067
      Godfrey Chan 提交于
      When using symbol keys, ActiveRecord will now translate aliased attribute names to the actual column name used in the database:
      
      With the model
      
        class Topic
          alias_attribute :heading, :title
        end
      
      The call
      
        Topic.where(heading: 'The First Topic')
      
      should yield the same result as
      
        Topic.where(title: 'The First Topic')
      
      This also applies to ActiveRecord::Relation::Calculations calls such as `Model.sum(:aliased)` and `Model.pluck(:aliased)`.
      
      This will not work with SQL fragment strings like `Model.sum('DISTINCT aliased')`.
      
      Github #7839
      
      *Godfrey Chan*
      54122067
    • C
      allow override of uuid_generate_v4() default by passing default: nil · 55c40c0e
      Chad Moone 提交于
      without this, it's not possible to use UUID primary keys without uuid-ossp installed and activated
      55c40c0e
  9. 01 5月, 2013 6 次提交
  10. 30 4月, 2013 3 次提交
  11. 29 4月, 2013 3 次提交
  12. 28 4月, 2013 1 次提交
  13. 26 4月, 2013 2 次提交
  14. 25 4月, 2013 5 次提交