Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Gem Version

delegate_associations

Usage

class Address < ActiveRecord::Base
  # columns: :city, :district
  
end

class Person < ActiveRecord::Base
  # columns: :name, email, :phone, :address_id
  
  belongs_to :address
  has_one :user
  has_many :books

  def address
    super || build_address # It's very important
  end

  delegate_attributes to: :address, prefix: true  
end

new_person =Person.new(name: "Joe", email: 'joe@mail.com', address_city: 'São Paulo', address_district: 'South Zone')
new_person.name # Joe
new_person.address_city # 'São Paulo'
new_person.address.city # 'São Paulo'
new_person.address_district # 'South Zone'
new_person.address.district # 'South Zone'

class User < ActiveRecord::Base
  belongs_to :person, autosave: true
  # columns: :login, :password
  
  def person
    super || build_person # It's very important
  end
  
  delegate_associations to: :person
  delegate_attributes to: :person
end

new_user =User.new(login: 'admin', password: 'paswd', name: "Joe", email: 'joe@mail.com')
new_user.name # Joe
new_user.login # admin
new_user.user # @user
new_user.books # []

user.email          # 'joe@mail.com'
user.email?         # true
user.email_changed? #true
user.email_was      # nil

Installation

Add this line to your application's Gemfile:

gem 'delegate_associations'

And then execute:

$ bundle

Or install it yourself as:

$ gem install delegate_associations

Credits

About

A gem for delegate attributes and associations of belongs_to and has_one!

Resources

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages