我有一个模型,它有两个列admin_approved和approval_date。通过使用admin_approved管理更新activeadmin。我希望当管理更新本专栏approval_date也由current_time更新。
我无法理解我是如何使用this.Which call_back的。
发布于 2016-02-12 09:33:53
#app/models/model.rb
class Model < ActiveRecord::Base
before_update 'self.approval_date = Time.now', if: "admin_approved?"
end 这假设您的表中有admin_approved (bool)和approval_date (datetime)。
它的工作方式是对使用字符串进行评估,以便在更新之前评估admin_approved属性是否为"true“。如果是,则将approval_date设置为当前时间。
发布于 2016-02-12 07:43:17
在模型中使用after_save回调。
会是这样的:
after_save do
if admin_approved_changed?
self.approval_date = Time.now
save!
end
end或者你想怎么改变就怎么改变!
发布于 2016-02-12 08:06:57
您可以在保存模型实例之前设置approval_date。因此,您可以保存一个数据库写入进程,而不是使用after_save保存实例,在after_save回调中,您将再次保存它。
class MyModel < ActiveRecord::Base
before_save :set_approval_date
# ... your model code ...
private
def set_approval_date
if admin_approved_changed?
self.approval_date = Time.now
end
end
end可能在您的控制器中:
my_instance = MyModel.find(params[:id])
my_instance.admin_approved = true
my_instance.savehttps://stackoverflow.com/questions/35357166
复制相似问题