次のエラーが発生します。
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
または、別の方法を避けて使用する必要がありますか?これは、すべてのエントリを調べていくつかの追加情報を検索するレーキタスク用です...