dimanche 3 mai 2015

Fetching last incomplete record or new in ActiveRecord

I have a Rails 3.2.21 app where I'm adding some basic timeclock functionality. I need to build a scope called current_clock_event that will look for the last record for a user where clock_out: nil so in essence, the record that will be fetched is the last ClockEvent record for the user that does not have a value in clock_out. This is what I want to pass to my controller/view.

class ClockEvent < ActiveRecord::Base
  attr_accessible :clock_in, :clock_out, :total_hours, :user_id 

  scope :current_clock_event, where(clock_out: NIL).last
end

As you can see I wrote a very simple scope to pull a record where the clock_out: NIL so in theory that should pull the last incomplete record. I think this is working ok but I need to figure out how to access this in the controller and have some sort of conditional to either pull the current_clock_event or instantiate a new clock event if the last record is completed (both clock_in and clock_out are populated)

So I'm stubbing out my controller but am hitting a wall as to how to do this.

class ClockEventsController < ApplicationController

  def index
    @clock_event = current_user.current_clock_event # need to figure out this part to fetch the record or if the record is complete instantiate a ClockEvent.new for the user.
    respond_to do |format|
      format.html # index.html.erb
      format.js
    end
  end
end 

I wrote code 2 years ago that did all of this but lost the repo by accident so I have nothing to reference and am sort of brain-fogging on how to pull this off.

Any help would be appreciated. If you need more examples or further explanation, please let me know.

Aucun commentaire:

Enregistrer un commentaire