GetOrBuild

This is a association builder which helps to generate or get associated object with belogs_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 terminal.

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 magick methods automatically

Contributing

You are welcome! Please, run test before pull request: ruby test/*.rb and make sure if everything is workig correctly.

TODO

  • tests for MongoMapper