Sha256: 427e197e07875ab0b4b9d1db793a38348ffcd0b86964f401ec3f02ec25251410

Contents?: true

Size: 1.83 KB

Versions: 1

Compression:

Stored size: 1.83 KB

Contents

# GetOrBuild

This is a association builder which helps to generate or get associated object with `belongs_to` or `has_one` association.

## Installation

Add this line to your Gemfile
`gem 'get_or_build'`
then as usually update installed gem by typing `bundle` in your command-line interface.

## Using with ActiveRecord

Assume you have model `Company` which has one `User` and belongs to `Location`:

	class Company < ActiveRecord::Base
		belongs_to :location
		has_one :user
		accepts_nested_attributes_for :user
		accepts_nested_attrbiutes_for :location
	end
	
	class User < ActiveRecord::Base; end
	class Location < ActiveRecord::Base; end

When you are building form for company with nested attributes for location or user you are able now use new methods like `user_or_build` or `location_or_build`:

	form_for :company do |f|
		f.fields_for :user, f.object.user_or_build do |fu|
			fu.text_field :name
		f.fields_for :location, f.object.location_or_build do |fl|
			fl.text_field :address
			
No longer need to call `f.object.user || f.object.build_user`

## Using with NoSQL databases

Just include in your document module `GetOrBuild::AssociationBuilder` and it will attach magic methods automatically

## Extension for fields_for method

You are able also to use option `:build_association` for `fields_for` method to build association if it doesn't exist yet:

		form_for :company do |f|
			f.fields_for :user, :build_association => true do |fu|
				fu.text_field :name
			f.fields_for :user, :build_association => true do |fl|
				fl.text_field :address

If you initialize associated object user for company before run `fields_for` helper then option `:build_association` won't give any effect

## Contributing
You are welcome! Please, run test before pull request: `rake` and make sure if everything is working correctly.

## TODO
* Support for NoSQL databases

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
get_or_build-0.0.3 README.md