/ developers

Some Handy Tips for Ruby on Rails Developers

Here are several beneficial strategies, inspirations plus resources for both newbie plus expert inside Ruby approximately Rails technology.

  1. Avoid scenarios where numerous techniques have the same functionality plus work approximately different class object.

For example: e-mail validation could function on consumer table, customer table plus contact table. Instead of composing the same code 3 occasions, programmer will define a single component approximately e-mail validation plus include it into the desired classes.

  1. Use called scope because it helps you to follow dry principle. Named range is chainable thus it will chain up various called range.

For example: numerous occasions you want to apply both searching & sorting functionality simultaneously. Here’s a class called “Contact”, that contains name plus description field, that will facilitate concurrent searching plus sorting by name plus description.

class Contact
  attr_accessible :description, :name
range :matching, lambda { |column, value|  where(“#{column} like ?”, “%#{value}%”) if value.present? }
range :order_by,lambda { |column,order| order(“#{column} #{order|purchase}”) if order.blank? || [“asc”,”desc”].include?(order.downcase)}


Contact.matching(“name”,params[:name]).matching(“description”,””).order_by(params[:sort_col   umn],params[:sort_order])

  1. Extract composed class from the model.

Suppose contact has address fields like address_city plus address_street you are able to extract address

class Customer
 composed_of :address, :mapping => [ %w(address_street street), %w(address_city city) ]

class Address
  attr_reader :street, :city
  def initialize(street, city)
  @street, @city = street, city


** Observer:**

Observer is observe the object plus approximately certain event do several stuff like sending notice to  project members following creating project

class ProjectObserver
 observe Project
 def after_create(project)
project.members.each do |member|
  ProjectMailer.deliver_notice(project, member)

  1. Utilize seed information for populating standard data

  2. Indexing: It helps you to better performance of questions. For instance: add_index :comments, :post_id

  3. Never write a logic inside Views. Move code to helper or employ drapper or presenter rather.

  4. Avoid example variable whenever it’s not required

  5. Avoid N+1 queries utilizing include plus join depending on need & don’t employ eager loading whenever it’s not required

  6. Utilize counter cache to better performance (Counting total no of jobs for project)

(Use bullet gem to find N+1 questions plus it helps you to identify counter-cache-column)

  1. Keep consistent structure inside model like Constant, Association, Validation, Callback, Class way, example method

  2. ** Annotate the models** utilizing (annoted or annoted-rails gem)

  3. Write comment approximately the code specifically magic code(Metaprogramming)

  4. Utilize memoization rails3.2.x utilizes standard ruby memoization


  1. To work huge information set utilize find_each or  find_in_batches

  2. Utilize helper method for dynamic design or setting dynamic class

  3. For polymorphic association employ polymorphic routes. For example: Article plus forum both has comments because Commentable

polymorphic_path([object, Comment])#/posts/1/comments” or “forums/1/comments”

  1. Utilize delegate to expose contained objects’ techniques because a own

class Task

belongs_to :project
delegate :name,  :to => :project

  1. Utilize debugger or pry to debug a application

Please feel free to share a tricks, inspirations plus suggestions inside the comments to the post.

Sherri Jones is a Web-Developer plus Ruby Programmer. The cause of composing the above mentioned post is to offer with certain significant [Tips approximately Ruby approximately Rails for Developers](http://ezinemark.com/goto.php?url=http://www.idyllic-software.com/).