我收到了以下错误信息:
当我尝试这样做时:
我不知道为什么ActiveRecord要放入那个
那么,我应该如何避免这种情况呢?是否有什么我应该在我的模型定义中放置的内容?还是我应该避免使用
PGError: ERROR: operator does not exist: character varying >= integer
LINE 1: ...CT "games".* FROM "games" WHERE ("games"."uuid" >= 0) ORDE...
^
HINT: No operator matches the given name and argument type(s). You might need to add explicit type casts.
: SELECT "games".* FROM "games" WHERE ("games"."uuid" >= 0) ORDER BY "games"."uuid" ASC LIMIT 1000
当我尝试这样做时:
Game.find_each do |game|
# ...
end
我有一个字符串(UUID)作为我的模型的主键:
class Game < ActiveRecord::Base
self.primary_key = 'uuid'
before_create do |game|
game.uuid = UUIDTools::UUID.timestamp_create().to_s if game.uuid.blank?
end
end
我不知道为什么ActiveRecord要放入那个
WHERE
子句,但它完全是不必要的,并且导致了类型错误(因为它是一个字符串列,而不是整数列)。那么,我应该如何避免这种情况呢?是否有什么我应该在我的模型定义中放置的内容?还是我应该避免使用
find_each
并使用其他方法?这是一个Rake任务,只是遍历所有条目并查找一些附加信息...