mirror of
https://github.com/rails/rails.git
synced 2022-11-09 12:12:34 -05:00
c8d889905d
This caused a bug with the new associations implementation, because now association conditions are represented as Arel nodes internally right up to when the whole thing gets turned to SQL. In Rails 3.2, association conditions get turned to raw SQL early on, which prevents Relation#merge from interfering. The current implementation was buggy when a default_scope existed on the target model, since we would basically end up doing: default_scope.merge(association_scope) If default_scope contained a where(foo: 'a') and association_scope contained a where(foo: 'b').where(foo: 'c') then the merger would see that the same column is representated on both sides of the merge and collapse the wheres to all but the last: where(foo: 'c') Now, the RHS of the merge is left alone. Fixes #8990
21 lines
683 B
Ruby
21 lines
683 B
Ruby
class Reader < ActiveRecord::Base
|
|
belongs_to :post
|
|
belongs_to :person, :inverse_of => :readers
|
|
belongs_to :single_person, :class_name => 'Person', :foreign_key => :person_id, :inverse_of => :reader
|
|
belongs_to :first_post, -> { where(id: [2, 3]) }
|
|
end
|
|
|
|
class SecureReader < ActiveRecord::Base
|
|
self.table_name = "readers"
|
|
|
|
belongs_to :secure_post, :class_name => "Post", :foreign_key => "post_id"
|
|
belongs_to :secure_person, :inverse_of => :secure_readers, :class_name => "Person", :foreign_key => "person_id"
|
|
end
|
|
|
|
class LazyReader < ActiveRecord::Base
|
|
self.table_name = "readers"
|
|
default_scope -> { where(skimmer: true) }
|
|
|
|
belongs_to :post
|
|
belongs_to :person
|
|
end
|