我想在after_save中使用数组更新字段。
同时执行不同的其他after_saves,忽略此。
我尝试使用update_column,但它没有序列化数组,所以我需要使用update_attribute或update_attributes。
How can I update array to a single field without performing callbacks
答案 0 :(得分:1)
ActiveRecord::Persistence#update_column(name, value)及其随附的ActiveRecord::Persistence#update_columns(attributes)是您要跳过回调和验证时使用的方法。从班级范围来看,ActiveRecord::Relation#update_all(updates) 或者,您可以使用JSON(而不是序列化数组),如:
class Bar < ActiveRecord::Base
def foo= array
write_attribute :foo, array.to_json
end
def foo
JSON.parse(read_attribute :foo)
end
end
以及其他地方:
Bar.first.update_column :foo, [1,2,3].to_json
至少,当您处理序列化ActiveRecord::Store时,对您来说可能会很有趣。