Rails会自动为created_at和updated_at等列插入值。我可以以更新更多列的方式配置rails。例如,我的所有表都有一个名为user的列,其中包含当前用户值,我是否可以默认rails ti insert user用于任何数据库更改?
答案 0 :(得分:2)
您可以尝试在模型中使用before_save函数,除非我误解了这个问题。
before_save :defaults
def defaults
#some stuff to set your defaults
end
答案 1 :(得分:1)
是的,您可以在模型中使用before_filter,例如
before_update :set_value
def set_value
self.value = "hello"
end
答案 2 :(得分:0)
您可以使用ActiveRecord回调在更改状态时触发逻辑,例如在将对象保存到数据库之前。创建对象(before_create)或更新(before_save)时,created_at和updated_at列会自动更新。您可以使用ActiveRecord :: Callbacks命名空间中定义的类方法定义自己的回调。一个例子是
# app/models/example.rb
class Example < ActiveRecord::Base
before_save :do_something
def do_something
self.value = value
end
end
如果您特别想要记录创建,更新或删除记录的用户,您可以节省一些工作并使用Userstamps Rails插件自动记录用户。此插件位于https://github.com/delynn/userstamp
# app/models/example.rb
class Example < ActiveRecord::Base
model_stamper
end
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
include Userstamp
end
您需要将userstamps列添加到要记录用户操作的每个模型上。
有关ActiveRecord回调的更多信息,请访问:http://api.rubyonrails.org/classes/ActiveRecord/Callbacks.html
有关时间戳的信息,请访问: ActiveRecord时间戳:http://api.rubyonrails.org/classes/ActiveRecord/Timestamp.html