ruby on rails - Run block of code only if object found -


is there cleaner way run block of code if object found? i'm testing see if param exists. error out i'm sure if there no object. please excuse ugly code:

def show   if params[:event_entry].to_i>1     event_entry = evententry.find(params[:event_entry])     #### event_entry here   end end 

there has better way go am...

an cleaner way (in rails 4) is:

def show   if event_entry = evententry.find_by(id: params[:event_entry])     # `event_entry` here   end end 

find_by return nil if record doesn't exist, see: http://api.rubyonrails.org/classes/activerecord/findermethods.html#method-i-find_by

edit:

as mentioned @apneadiving in comment below, nice if done using abstract method call before_filter , start of controller applicable methods (such show, edit, update , delete). i've included example of below.

class evententriescontroller < applicationcontroller   before_filter :set_event_entry, only: :show    def show     # have access @event_entry because set before method called   end    private    def set_event_entry     @event_entry = evententry.find_by(id: params[:event_entry])   end end 

now can add other methods before_filter line @ start of controller gain access @event_entry in methods. like

before_filter :set_event_entry, only: [:show, :edit, :update, :destroy] 

should trick.

note: may see before_action used in places instead of before_filter. either of these work.


Comments

Popular posts from this blog

java - How to specify maven bin in eclipse maven plugin? -

single sign on - Logging into Plone site with credentials passed through HTTP -

php - Why does AJAX not process login form? -