Project

getter_for

0.0
No commit activity in last 3 years
No release in over 3 years
Generates convenience methods especially for use in views like [ticket.user_name] instead of [ticket.user.name if ticket.user]
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
2025
2026
 Dependencies
 Project Readme

Getter For

  gem install getter_for

Setup

image you have a ticket model that belongs to a user. you can add convenience methods for any user attribute like that:

  class Ticket < ActiveRecord::Base
    belongs_to :user
    
    getter_for :user => :name
  end
  
  @ticket = Ticket.new
  @ticket.user_name      # => @ticket.user.name if @ticket.user

That method returns nil if user is nil, so it can safely used in your views

You can pass multiple key/value pairs separated by comma and provide arrays for both model name and method name. let me show you:

  class Project < ActiveRecord::Base
    belongs_to :category
    belongs_to :user
    belongs_to :assignee, :class_name => 'User'
    
    getter_for [:category, :user] =>  :name,
                :assignee         => [:email, :phone]
  end
  
  @project = Project.new
  @project.category_name     # => @project.category.name  if @project.category
  @project.user_name         # => @project.user.name      if @project.user
  @project.assignee_email    # => @project.assignee.email if @project.assignee
  @project.assignee_phone    # => @project.assignee.phone if @project.assignee    

you can also make fancy stuff like:

  class User < ActiveRecord::Base
    belongs_to :department
    getter_for :department => :name        # => user.department_name
  end
  
  class Comment < ActiveRecord::Base
    belongs_to :user
    getter_for :user => :department_name   # => comment.user_department_name
  end
  
  @comment = Comment.new
  @comment.user_department_name    # => @comment.user.department.name if @comment.user && @comment.user.department

Copyright © 2009 Martin Linkhorst, released under the MIT license.