我需要一种简单的方法来在更新活动记录时跳过验证和回调。
我正在运行以下代码:
Student.find_or_create_by(id: data['id']).update(data)
其中data
是具有与学生列相同键的哈希值。
它按预期工作。但我想避免在更新时进行所有回调和验证。如某些堆栈溢出答案中所述,我尝试过:
Student.find_or_create_by(id: data['id']).send(:update_without_callbacks, data)
未定义的方法update_without_callbacks
说,它不起作用。
Rails中是否没有像update_by_skipping_callbacks
或update(skip_callbacks: true, data)
这样的简单方法?
答案 0 :(得分:1)
https://guides.rubyonrails.org/active_record_callbacks.html#skipping-callbacks
您可以尝试update_columns
方法
https://apidock.com/rails/ActiveRecord/Persistence/update_columns
请记住,这直接进入数据库,因此updated_at
列不会更新,除非您明确地对其进行更新
答案 1 :(得分:0)
尝试
Student.find_or_create_by(id: data['id']).assign_attributes(data).save(validate: false)