aboutsummaryrefslogtreecommitdiffstats
path: root/activerecord/test/models
diff options
context:
space:
mode:
authorJon Leighton <j@jonathanleighton.com>2010-10-19 00:27:40 +0100
committerJon Leighton <j@jonathanleighton.com>2010-10-19 00:27:40 +0100
commit9ec07348749675110843c44f680da79223218db2 (patch)
treee4a356d2b6ee95232097fac21df5a04118dcc014 /activerecord/test/models
parent78b8c51cb3b0c629152f3bbaf6d8bcf988cc936e (diff)
downloadrails-9ec07348749675110843c44f680da79223218db2.tar.gz
rails-9ec07348749675110843c44f680da79223218db2.tar.bz2
rails-9ec07348749675110843c44f680da79223218db2.zip
Properly support conditions on any of the reflections involved in a nested through association
Diffstat (limited to 'activerecord/test/models')
-rw-r--r--activerecord/test/models/author.rb7
-rw-r--r--activerecord/test/models/post.rb5
-rw-r--r--activerecord/test/models/tagging.rb3
3 files changed, 13 insertions, 2 deletions
diff --git a/activerecord/test/models/author.rb b/activerecord/test/models/author.rb
index b5f702018a..c0e082836d 100644
--- a/activerecord/test/models/author.rb
+++ b/activerecord/test/models/author.rb
@@ -86,7 +86,7 @@ class Author < ActiveRecord::Base
has_many :tagging, :through => :posts
has_many :taggings, :through => :posts
has_many :tags, :through => :posts
- has_many :similar_posts, :through => :tags, :source => :tagged_posts
+ has_many :similar_posts, :through => :tags, :source => :tagged_posts, :uniq => true
has_many :distinct_tags, :through => :posts, :source => :tags, :select => "DISTINCT tags.*", :order => "tags.name"
has_many :post_categories, :through => :posts, :source => :categories
has_many :tagging_tags, :through => :taggings, :source => :tag
@@ -103,6 +103,11 @@ class Author < ActiveRecord::Base
has_many :post_categories, :through => :posts, :source => :categories
has_many :category_post_comments, :through => :categories, :source => :post_comments
+
+ has_many :misc_posts, :class_name => 'Post', :conditions => "posts.title LIKE 'misc post%'"
+ has_many :misc_post_first_blue_tags, :through => :misc_posts, :source => :first_blue_tags
+
+ has_many :misc_post_first_blue_tags_2, :through => :posts, :source => :first_blue_tags_2, :conditions => "posts.title LIKE 'misc post%'"
scope :relation_include_posts, includes(:posts)
scope :relation_include_tags, includes(:tags)
diff --git a/activerecord/test/models/post.rb b/activerecord/test/models/post.rb
index f3b78c3647..281586b438 100644
--- a/activerecord/test/models/post.rb
+++ b/activerecord/test/models/post.rb
@@ -64,6 +64,11 @@ class Post < ActiveRecord::Base
has_many :funky_tags, :through => :taggings, :source => :tag
has_many :super_tags, :through => :taggings
has_one :tagging, :as => :taggable
+
+ has_many :first_taggings, :as => :taggable, :class_name => 'Tagging', :conditions => "taggings.comment = 'first'"
+ has_many :first_blue_tags, :through => :first_taggings, :source => :tag, :conditions => "tags.name = 'Blue'"
+
+ has_many :first_blue_tags_2, :through => :taggings, :source => :blue_tag, :conditions => "taggings.comment = 'first'"
has_many :invalid_taggings, :as => :taggable, :class_name => "Tagging", :conditions => 'taggings.id < 0'
has_many :invalid_tags, :through => :invalid_taggings, :source => :tag
diff --git a/activerecord/test/models/tagging.rb b/activerecord/test/models/tagging.rb
index a1fa1a9750..c92df88e71 100644
--- a/activerecord/test/models/tagging.rb
+++ b/activerecord/test/models/tagging.rb
@@ -6,5 +6,6 @@ class Tagging < ActiveRecord::Base
belongs_to :tag, :include => :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 :blue_tag, :class_name => 'Tag', :foreign_key => :tag_id, :conditions => "tags.name = 'Blue'"
belongs_to :taggable, :polymorphic => true, :counter_cache => true
-end \ No newline at end of file
+end