我有一个现有的模型,在生产中有超过1,000,000个大对象。我需要在这个模型中添加一个新字段,在这里迁移不是一个理想的选择。是否有一种方法可以添加此字段并慢慢填充它?
理想情况下,我会有一个这样的模型类
class Car
field :name, type: String
end
我可以添加一个字段并在每次使用时填充它?
class Car
field :name, type: String
field :year, type: String
def year
@year ||= '1997'
end
end
有什么建议,这是否可行?我想这是开发人员遇到的一个常见问题,我想知道解决这个问题的正确方法。
1条答案
按热度按时间vqlkdk9b1#
我最终遵循了@BenTrewern关于使用默认值的建议。所以我创建了一个私有方法并在默认情况下调用它。
这不需要迁移,只是一个简单的更改。我想知道如果我们的默认方法依赖于另一个字段,这会有什么影响。如果另一个字段发生更改,我将如何处理更新此字段?
在这个例子中,假设Car ['name'] = 'Toyota' Car ['name_and_year']默认为'Toyota 1997',但是如果我们将Car ['name']更改为'本田',那么Car ['name_and_year']将仍然是'Toyota 1997',我们可以使用after_touch,但是这样每次都会更新它,而不是只有在名称字段更改时才更新