Ruby on rails rails中特定字段/属性的自定义更新_at

Ruby on rails rails中特定字段/属性的自定义更新_at,ruby-on-rails,ruby,Ruby On Rails,Ruby,我目前有一个方法,可以增加订阅服务器上的属性。它的访问属性带有一个整数。我的问题是-我能找到上次更新了访问属性的订户吗?在控制台中,它看起来像这样-Subscriber.find(“visit+=1”)。last您总是可以像这样获得最后更新的项目: Subscriber.order('updated_at desc').first 但是,:updated_at将更新,即使更新了除:visit以外的任何内容。因此,您必须编写一个小迁移来添加一个自定义字段,它将为我们完成这项工作 rails g

我目前有一个方法,可以增加订阅服务器上的属性。它的访问属性带有一个整数。我的问题是-我能找到上次更新了访问属性的
订户吗?在控制台中,它看起来像这样-
Subscriber.find(“visit+=1”)。last
您总是可以像这样获得最后更新的项目:

Subscriber.order('updated_at desc').first
但是,
:updated_at
将更新,即使更新了除
:visit
以外的任何内容。因此,您必须编写一个小迁移来添加一个自定义字段,它将为我们完成这项工作

rails g migration AddLastVistedToSubscriber last_visited:datetime
运行rake
db:migrate
:last_visted
添加到我们的表中。现在我们需要在执行+1到
:visit
时更新该字段

def visit
  @subscriber = Subscriber.find_by(params[:phone_number])
  if @subscriber
    @subscriber.visit ||= 0
    @subscriber.visit += 1
    if @subscriber.save
      @subscriber.touch(:last_visited) #this will update the last_visited with the update time
      flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal"
      redirect_to subscribers_search_path(:subscriber)
    end
  else
    render "search"
  end
end
现在我们可以很容易地搜索最后递增的
订户的
:visit

Subscriber.order('last_visited desc').first

除非您有一个特殊的timestamp字段,该字段仅在调用上述方法时更新,否则您不能。Rails会自动将上次修改的日期存储在表中。因此,您可以对其进行排序并获得第一条记录。
find_by
似乎有误,可能您需要执行
Subscriber.find_by(电话号码:params[:电话号码])
加油!很高兴我能提供帮助。在5.1+中,您现在可以在保存之前添加一个回调函数,如
:do\u something,if::will\u save\u change\u to\u attribute?
Subscriber.order('last_visited desc').first