user828061
user828061

Reputation: 91

get last insert id from after_create callback

my controller

new_task = {:user_id => params[:user_id],:task => params[:task] }
work = Work.new new_task
if work.valid?
    work.save!
    if !params[:sub].nil?
        new_sub = {:activity => self.activity.id,:sub_task => "something etc" }
        sub_task = SubTask.new new_sub
        sub_task.save!
    end

end

My Model

attr_accessible :user_id, :task, :created_at, :updated_at
after_create :add_activity

def add_activity
    new_activity = {:user_id => self.user_id,:text => "new task" }
    user_activity = Activity.new new_activity
    user_activity.save!
end

how i can get last inserted ID of activity form after_create callback. self.activity.id is not working for me

Upvotes: 0

Views: 1021

Answers (1)

Valery Kvon
Valery Kvon

Reputation: 4496

def last_activity
  @last_activity || (Activity.where(:user_id => self.user_id).order("id").last if user_id)
end

def add_activity
  new_activity = {:user_id => self.user_id,:text => "new task" }
  user_activity = Activity.new new_activity
  user_activity.save!
  @last_activity = user_activity
end

self.last_activity.id

Upvotes: 1

Related Questions