我目前有一个方法可以增加Subscriber
上的属性。它的访问属性包含int。我的问题是 - 我能否找到最后更新其访问属性的Subscriber
?在控制台中它看起来像这样 - Subscriber.find("visit +=1").last
< - 完全错误的BTW,但我认为它看起来有点像那样?有人知道如何在控制台中调用它吗?任何帮助都会很棒。
控制器方法:
def visit
@subscriber = Subscriber.find_by(params[:phone_number])
if @subscriber
@subscriber.visit ||= 0
@subscriber.visit += 1
@subscriber.save
flash[:notice] = flash[:notice] = "Thank You #{@subscriber.first_name}. You have #{@subscriber.days_till_expired} until renewal"
redirect_to subscribers_search_path(:subscriber)
else
render "search"
end
end
如您所见,我想调用上次使用此方法的订阅者更新其对象的visit属性。如果您需要更多信息,请告诉我。
答案 0 :(得分:2)
您可以随时获取上次更新的项目:
Subscriber.order('updated_at desc').first
但即使:updated_at
以外的任何内容更新,:visit
也会更新。因此,您必须编写一些迁移来添加自定义字段,以便为我们完成工作。
rails g migration AddLastVistedToSubscriber last_visited:datetime
运行rake db:migrate
将:last_visited
添加到我们的表格中。现在,只要我们对:visit
执行+1,就需要更新该字段。
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
现在,我们可以轻松搜索subscriber
:visit
最后增加的内容。
Subscriber.order('last_visited desc').first