Sha256: 666056acdbdac706cdb1a583b089dd0dee75d8a64106c20070e0fc74baabf1aa

Contents?: true

Size: 1.67 KB

Versions: 2

Compression:

Stored size: 1.67 KB

Contents

# MostRelated

`most_related` returns models that have the most many to many associated models in common

## Installation

Add this line to your application's Gemfile:

    gem 'most_related'

And then execute:

    $ bundle

Or install it yourself as:

    $ gem install most_related

## Usage

Post example

    class Post < ActiveRecord::Base
      has_most_related :authors
      has_most_related :tags, as: :most_related_by_tags
      has_most_related [:authors, :tags], as: :most_related_by_author_or_tag

      has_many :author_posts
      has_many :authors, through: :author_posts
    end

    class Author < ActiveRecord::Base
      has_many :author_posts
    end

    class AuthorPosts < ActiveRecord::Base
      belongs_to :author
      belongs_to :post
    end

To return the posts with the most authors in common with post, in descending order:

    post.most_related

To return the posts with the most tags in common with post, in descending order:

    post.most_related_by_tag

To return the posts with the most authors and tags in common with post, in descending order:

    post.most_related_by_author_or_tag

The count of the many to many associated models in common is accessible on each returned model

    post.most_related_count
    post.most_related_by_tag_count
    post.most_related_by_author_or_tag

If multiple many to many associations are used, the syntax is specific to MySql.

Because of the use of 'group', pagination is not supported.

## Contributing

1. Fork it
2. Create your feature branch (`git checkout -b my-new-feature`)
3. Commit your changes (`git commit -am 'Add some feature'`)
4. Push to the branch (`git push origin my-new-feature`)
5. Create new Pull Request

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
most_related-0.0.3 README.md
most_related-0.0.2 README.md