从after_create回调中获取最后一个插入ID

时间:2012-12-29 15:56:12

标签: ruby-on-rails-3 activerecord

我的控制器

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

我的模特

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

我怎样才能获得最后一次插入活动形式ID的after_create回调。 self.activity.id对我不起作用

1 个答案:

答案 0 :(得分:1)

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
相关问题