gpt4 book ai didi

ruby-on-rails - 由于新列的模型验证,Rails 旧迁移失败

转载 作者:行者123 更新时间:2023-12-04 18:20:45 25 4
gpt4 key购买 nike

我有一个应用程序在生产中使用事件管理员和设计。我尝试添加 user_role到表admin_users .我还想验证在创建新管理员用户时是否选择了角色名称。所以我添加 validates :role_id, :presence => true在 rails 模型中。

当我在旧数据库上运行新迁移时,一切正常。但是当我尝试从头开始应用迁移时,由于模型中添加了验证,用于创建管理员用户的旧迁移失败,说未定义的方法错误。

在不更改旧迁移的情况下,并在从 UI 创建管理员用户时进行验证,是否有可能克服这种情况

最佳答案

我遇到过这个问题,对我来说最好的解决方案似乎是在迁移中修改模型并通过打开模型的类来删除有问题的验证(在迁移期间)。

假设您有一个模型 Employee和对列的验证 firstname正在干扰特定的迁移。假设您使用的是 Rails 4.2,这应该可以工作:

class CreateStoreFromPreferences < ActiveRecord::Migration
def change
Employee.class_eval do
_validators.delete(:firstname)

_validate_callbacks.each do |callback|
if callback.raw_filter.respond_to? :attributes
callback.raw_filter.attributes.delete :firstname
end
end
end

# actual migration code goes here
end
end

关于ruby-on-rails - 由于新列的模型验证,Rails 旧迁移失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49963577/

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