gpt4 book ai didi

ruby-on-rails - 已添加但未填充 Rails 迁移列

转载 作者:太空宇宙 更新时间:2023-11-03 16:02:15 26 4
gpt4 key购买 nike

我正在尝试编写一个非常简单的 Rails 迁移,向表中添加一个新列并使用来自其他列的数据组合填充它。但是,该列已添加,但每条记录的列值为 nil。我做错了什么?

class AddNameToPermissions < ActiveRecord::Migration
def change
add_column :auth_permissions, :name, :string
Auth::Permission.reset_column_information
Auth::Permission.all.each do |permission|
target_name = permission.target_symbol || permission.target_class
permission.name = permission.action << ", " << target_name
permission.save
end
end
end

最佳答案

调用 permission.save 将执行所有回调,包括验证器,并且验证器可能会阻止保存记录。要跳过验证器,您可以使用 update_column 而不是 save

permission.update_column(:name, permission.action << ", " << target_name)

此外,我会向您推荐一些提示:

  • 使用 Auth::Permission.find_each 而不是 Auth::Permission.all.each(这会将所有记录一次加载到内存中)
  • 尝试在 rake 任务中更新权限并仅使用迁移来修改表(这是推荐的良好实践方式)

关于ruby-on-rails - 已添加但未填充 Rails 迁移列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21805748/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com