Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Words - warning about this branch not working
- Loading branch information
Showing
1 changed file
with
6 additions
and
93 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,95 +1,8 @@ | ||
http://plugins.ardes.com > nested_has_many_through | ||
= Rewrite of nested_has_many_through | ||
|
||
= nested_has_many_through | ||
== THIS IS NOT WORKING ATM | ||
|
||
A fantastic patch/plugin has been floating around for a while: | ||
|
||
* http://dev.rubyonrails.org/ticket/6461 | ||
* http://code.torchbox.com/svn/rails/plugins/nested_has_many_through | ||
|
||
obrie made the original ticket and Matt Westcott released the first version of | ||
the plugin, under the MIT license. Many others have contributed, see the trac | ||
ticket for details. | ||
|
||
Here is a refactored version (I didn't write the original), suitable for edge/2.0-stable | ||
with a bunch of acceptance specs. I'm concentrating on plugin usage, once | ||
it becomes stable, and well enough speced/understood, then it's time to pester | ||
rails-core. | ||
|
||
== Why republish this on github? | ||
|
||
* The previous implementations are very poorly speced/tested, so it's pretty | ||
hard to refactor and understand this complicated bit of sql-fu, especially | ||
when you're aiming at a moving target (edge) | ||
* the lastest patches don't apply on edge | ||
* github - let's collab to make this better and get a patch accepted, fork away! | ||
|
||
== Help out | ||
|
||
I'm releasing 'early and often' in the hope that people will use it and find bugs/problems. | ||
Report them at http://ianwhite.lighthouseapp.com, or fork and pull request, yada yada. | ||
|
||
== History | ||
|
||
Here's the original description: | ||
|
||
This plugin makes it possible to define has_many :through relationships that | ||
go through other has_many :through relationships, possibly through an | ||
arbitrarily deep hierarchy. This allows associations across any number of | ||
tables to be constructed, without having to resort to find_by_sql (which isn't | ||
a suitable solution if you need to do eager loading through :include as well). | ||
|
||
== Contributors | ||
|
||
* Matt Westcott | ||
* terceiro | ||
* shoe | ||
* mhoroschun | ||
* Ian White (http://github.com/ianwhite) | ||
* Claudio (http://github.com/masterkain) | ||
|
||
Get in touch if you should be on this list | ||
|
||
== Show me the money! | ||
|
||
Here's some models from the specs: | ||
|
||
class Author < User | ||
has_many :posts | ||
has_many :categories, :through => :posts, :uniq => true | ||
has_many :similar_posts, :through => :categories, :source => :posts | ||
has_many :similar_authors, :through => :similar_posts, :source => :author, :uniq => true | ||
has_many :posts_of_similar_authors, :through => :similar_authors, :source => :posts, :uniq => true | ||
has_many :commenters, :through => :posts, :uniq => true | ||
end | ||
|
||
class Post < ActiveRecord::Base | ||
belongs_to :author | ||
belongs_to :category | ||
has_many :comments | ||
has_many :commenters, :through => :comments, :source => :user, :uniq => true | ||
end | ||
|
||
The first two has_manys of Author are plain vanilla, the last four are what this plugin enables | ||
|
||
# has_many through a has_many :through | ||
has_many :similar_posts, :through => :categories, :source => :posts | ||
|
||
# doubly nested has_many :through | ||
has_many :similar_authors, :through => :similar_posts, :source => :author, :uniq => true | ||
|
||
# whoah! | ||
has_many :posts_of_similar_authors, :through => :similar_authors, :source => :posts, :uniq => true | ||
|
||
# has_many through a has_many :through in another model | ||
has_many :commenters, :through => :posts, :uniq => true | ||
|
||
== What does it run on? | ||
|
||
Currently the master branch is running on 2.1, and 2.2 stable branches | ||
|
||
Recent changes have made master incompatible with rails 2.0, if you want to use this | ||
with rails 2.0, then use the rails-2.0 branch. | ||
|
||
If you want to run the CI suite, then check out garlic_example.rb (The CI suite | ||
is being cooked with garlic - git://github.com/ianwhite/garlic) | ||
* Isolate new behaviour by making new association classes for the new behaviour | ||
* Defer to rails when possible | ||
* More testing of normal behaviour [Maran Hidskes] | ||
* rails 2.3 and beyond compat is target |