Joh*_*ssy 70 activerecord ruby-on-rails ruby-on-rails-3
我有一个特别复杂的模型,其中定义了验证和回调.业务需求现在需要一个特定的场景,添加新记录需要跳过验证和回调.最好的方法是什么?
Din*_*tih 118
这适用于Rails 3:
Model.skip_callback(:create)
model.save(:validate => false)
Model.set_callback(:create)
Run Code Online (Sandbox Code Playgroud)
bow*_*ior 29
使用ActiveRecord :: Persistence#update_column,如下所示:
Model.update_column(field, value)
Run Code Online (Sandbox Code Playgroud)
Bra*_*rth 10
如果目标是简单地插入或更新没有回调或验证的记录,并且您希望在不借助其他宝石,添加条件检查,使用RAW SQL或以任何方式使用现有代码进行操作的情况下执行此操作,则可能是可以使用指向现有数据库表的"影子对象".像这样:
class ImportedUser < ActiveRecord::Base
# To import users with no validations or callbacks
self.table_name = 'users'
end
Run Code Online (Sandbox Code Playgroud)
这适用于每个版本的Rails,线程安全,完全消除所有验证和回调,而无需修改现有代码.只需记住使用新类插入对象,例如:
ImportedUser.new( person_attributes )
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70330 次 |
| 最近记录: |