Rails自动为像created_at和updated_at这样的列插入值。我能否以这种方式配置导轨,以便更新更多的列。例如,我所有的表都有一个名为user的列,保存当前用户值,我可以在缺少任何数据库更改的情况下插入用户吗?使用rails在表格中插入默认值
0
A
回答
2
你可以尝试在你的模型中使用before_save函数,除非我误解了这个问题。
before_save :defaults
def defaults
#some stuff to set your defaults
end
1
是的,你可以在模型中使用before_filter,例如,
before_update :set_value
def set_value
self.value = "hello"
end
0
您可以使用ActiveRecord回调在更改状态时触发逻辑,例如将对象保存到数据库之前。 created_at和updated_at列在创建对象(before_create)或更新(before_save)时自动更新。您可以使用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
相关问题
- 1. 插入默认值
- 2. 插入默认值
- 3. 插入空值时插入默认值
- 4. 在datetime列中插入默认值
- 5. 在MySQL中插入默认值+30天
- 6. 在列表中插入默认值以使其长度固定
- 7. 如何插入到表默认值
- 8. SQL插入默认值
- 9. 使用小巧玲珑插入到用默认值的表
- 10. 使用dbForge插入查询不插入默认值
- 11. 使用默认值FIREBIRD将空值插入到非空列中
- 12. 如何在请求== POST后保存/插入默认值到表格中?
- 13. 如何在SQL表中插入默认值?
- 14. Rails中create_table的默认值
- 15. Rails i18n默认值
- 16. 如何使用python插入默认值的html格式文本输入?
- 17. 使用默认值SQLAlchemy批量插入缺失值
- 18. 如果列值为'None',则使用光标插入默认值
- 19. Ruby on Rails和MSSQL Server:尝试插入newid()默认值的行
- 20. Rails simple_form默认输入值不显示
- 21. 默认值在mysql表中
- 22. Postgres:始终使用默认列值,即使尝试插入
- 23. 在tkinter中插入默认值入口停止验证
- 24. sqlite的插入与默认字段的默认值
- 25. 插入到SQL默认值错误
- 26. dropdownlist插入总是默认值
- 27. 插入默认值与其他列
- 28. Sql Server CE 4插入默认值
- 29. PostgreSQL:条件插入默认值
- 30. DetailsView上的默认值插入
在进一步阅读,似乎要与所有的资源相关联当前用户。你为什么不把范围内的所有资源放在current_user下面,然后你不需要使用类似上面的过滤器? – amaseuk