# Banyan ## Installation In Gemfile ``` ruby gem 'banyan', :git => 'git://github.com/partnerpedia/banyan.git' ``` Then: ``` bash $ bundle install $ rails generate banyan $ rake db:migrate ``` This will install Banyan and create required database migration. ## Usage of Categories Each ActiveRecord can have assigned categories. In order to do that you can add this line to model: ``` ruby class MyModel < ActiveRecord::Base acts_as_categorizable end ``` This will create "categories" association, which will be able to assign multiple Banyan::Category objects. ``` ruby my_model = MyModel.new my_model.categories # => [] my_model.categories << Banyan::Category.first ``` You can also specify that you want only one Category per model instance: ``` ruby class MyModel < ActiveRecord::Base acts_as_categorizable :single => true end ``` In that case "category" association will be created: ``` ruby my_model = MyModel.new my_model.category # => nil my_model.category = Banyan::Category.first ``` Each Banyan::Category object can have following attributes: - [string] tag: this field is indexed and is each to search by for specific Category - [string] name: this is translated(via Globalize3) field, used to describe Category for end user - [collection] categories: each Category can have children - [collection] category_groups: each Category can have multiple CategoryGroups(described later). This is many-to-many association If you want to access your model list for specified category then special association is created using your model name and "_categorizations" suffix: ``` ruby category = Banyan::Category.first category.my_model_categorizations # => [] ``` You can change this behavior by by providing "as" options: ``` ruby class MyModel < ActiveRecord::Base acts_as_categorizable :as => "my_associations" end category = Banyan::Category.first category.my_associations # => [] ``` ## Usage of Category Groups Category Groups works with similar way that Categories. The main difference is that each CategoryGroup can have only one object attached(instead of collection for Category) ``` ruby class MyModel < ActiveRecord::Base acts_as_group_categorizable end my_model = MyModel.first category_group = Banyan::CategoryGroup.first category_group.group_categorizable # => nil category_group.group_categorizable = my_model my_model.category_groups # => [category_group] ``` Banyan::CategoryGroup have exactly the same attributes as Banyan::Category(see earlier). ## License Banyan is released under the [MIT license](http://www.opensource.org/licenses/MIT).