Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

Access attributes on HasOne Associations as though they were on the base class

branch: master

Fetching latest commit…

Octocat-spinner-32-eaf2f5

Cannot retrieve the latest commit at this time

Octocat-spinner-32 lib
Octocat-spinner-32 MIT-LICENSE
Octocat-spinner-32 README
Octocat-spinner-32 Rakefile
Octocat-spinner-32 init.rb
README
has_one_accessor
==========

A simple plugin to allow you to use an ActiveRecord HasOne Association's attributes like those of your own model.
It will give you nice setter and getter methods that will dynamically build the association, set it, and save it only on save of the underlying record.
This is useful for taking input from forms;
  User.new(params[:user]) is much nicer than
  
  auth_params = params[:user].delete(:auth)
  user = User.new(params[:user])
  user.authentication || user.build_authentication
  user.authentication.openid_url = auth_params[:openid_url]
  ...blah blah blah...

Simplicity and peace of mind is but a `has_one_accessor` away

Example
=======

  class User
    has_one :authentication
    has_one_accessor :authentication, [:openid_url, :facebook_token], :allow_blank => false
  end

this gives us

  user.authentication_openid_url
  user.authentication_openid_url=
  user.authentication_facebook_token
  user.authentication_facebook_token=

and with :allow_blank => false, it'll remove records with blank values on save.

also, if you prefer to generate methods without a :prefix

  has_one_accessor :authentication, :google_id, :prefix => false

will give us

  user.google_id
  user.google_id=

with all of the same niceties

Copyright (c) 2008 [Matthew Rudy Jacobs], released under the MIT license
Something went wrong with that request. Please try again.