Merge pull request #30682 from ahorek/fix_scope_for
delegate scope_for on PolymorphicReflection
This commit is contained in:
commit
432b193d3a
@ -1002,7 +1002,7 @@ def derive_class_name
|
||||
end
|
||||
|
||||
class PolymorphicReflection < AbstractReflection # :nodoc:
|
||||
delegate :klass, :scope, :plural_name, :type, :get_join_keys, to: :@reflection
|
||||
delegate :klass, :scope, :plural_name, :type, :get_join_keys, :scope_for, to: :@reflection
|
||||
|
||||
def initialize(reflection, previous_reflection)
|
||||
@reflection = reflection
|
||||
|
@ -425,6 +425,11 @@ def test_nested_has_many_through_with_a_table_referenced_multiple_times
|
||||
assert authors.empty?
|
||||
end
|
||||
|
||||
def test_nested_has_many_through_with_scope_on_polymorphic_reflection
|
||||
authors = Author.joins(:ordered_posts).where("posts.id" => posts(:misc_by_bob).id)
|
||||
assert_equal [authors(:mary), authors(:bob)], authors.distinct.sort_by(&:id)
|
||||
end
|
||||
|
||||
def test_has_many_through_with_foreign_key_option_on_through_reflection
|
||||
assert_equal [posts(:welcome), posts(:authorless)], people(:david).agents_posts.order("posts.id")
|
||||
assert_equal [authors(:david)], references(:david_unicyclist).agents_posts_authors
|
||||
|
@ -101,10 +101,12 @@ def ratings
|
||||
has_many :taggings, through: :posts, source: :taggings
|
||||
has_many :taggings_2, through: :posts, source: :tagging
|
||||
has_many :tags, through: :posts
|
||||
has_many :ordered_tags, through: :posts
|
||||
has_many :post_categories, through: :posts, source: :categories
|
||||
has_many :tagging_tags, through: :taggings, source: :tag
|
||||
|
||||
has_many :similar_posts, -> { distinct }, through: :tags, source: :tagged_posts
|
||||
has_many :ordered_posts, -> { distinct }, through: :ordered_tags, source: :tagged_posts
|
||||
has_many :distinct_tags, -> { select("DISTINCT tags.*").order("tags.name") }, through: :posts, source: :tags
|
||||
|
||||
has_many :tags_with_primary_key, through: :posts
|
||||
|
@ -115,6 +115,7 @@ def add_joins_and_select
|
||||
has_many :misc_tags, -> { where tags: { name: "Misc" } }, through: :taggings, source: :tag
|
||||
has_many :funky_tags, through: :taggings, source: :tag
|
||||
has_many :super_tags, through: :taggings
|
||||
has_many :ordered_tags, through: :taggings
|
||||
has_many :tags_with_primary_key, through: :taggings, source: :tag_with_primary_key
|
||||
has_one :tagging, as: :taggable
|
||||
|
||||
|
@ -12,4 +12,5 @@ class OrderedTag < Tag
|
||||
self.table_name = "tags"
|
||||
|
||||
has_many :taggings, -> { order("taggings.id DESC") }, foreign_key: "tag_id"
|
||||
has_many :tagged_posts, through: :taggings, source: "taggable", source_type: "Post"
|
||||
end
|
||||
|
@ -8,6 +8,7 @@ class Tagging < ActiveRecord::Base
|
||||
belongs_to :tag, -> { includes(:tagging) }
|
||||
belongs_to :super_tag, class_name: "Tag", foreign_key: "super_tag_id"
|
||||
belongs_to :invalid_tag, class_name: "Tag", foreign_key: "tag_id"
|
||||
belongs_to :ordered_tag, class_name: "OrderedTag", foreign_key: "tag_id"
|
||||
belongs_to :blue_tag, -> { where tags: { name: "Blue" } }, class_name: "Tag", foreign_key: :tag_id
|
||||
belongs_to :tag_with_primary_key, class_name: "Tag", foreign_key: :tag_id, primary_key: :custom_primary_key
|
||||
belongs_to :taggable, polymorphic: true, counter_cache: :tags_count
|
||||
|
Loading…
Reference in New Issue
Block a user