这一行以前可以在SQlite中使用。但是现在我切换到了postgreSQL,如果数组是空的,它会引发一个异常。
InstagramMedia.where(instagram_account: [self.instagram_accounts.ids])让PostgreSQL高兴的最有效的方式是什么?当self.instagram_accounts.ids为空时
谢谢
编辑错误为:
ActiveRecord::StatementInvalid - PG::SyntaxError: ERROR: syntax error at or near ")"
LINE 1: ...media" WHERE "instagram_media"."instagram_account_id" IN ()
^
: SELECT COUNT(*) FROM "instagram_media" WHERE "instagram_media"."instagram_account_id" IN ():并且只有在数组为空时才会发生。
发布于 2016-10-21 02:17:30
您使用的是什么版本的Rails和Postgres?
在#where中将空数组传递给应该不会引发错误:
(Rails 4.2.6 and Postgres 9.4)
>> User.where(id: [])
>> User Load (0.5ms) SELECT "users".* FROM "users" WHERE 1=0
[]看起来您的self.instagram_accounts.ids可能返回一个数组,这意味着您正在传递一个嵌套数组。该功能在4.2中已被弃用,但我认为在5.0中已被删除。这会是你的错误的来源吗?
WARN弃用警告:将嵌套数组传递给活动记录查找器方法已弃用,将被删除。在将数组用于“IN”条件之前,先展平数组。
如果不是这样,你能发布整个错误吗?
https://stackoverflow.com/questions/40159587
复制相似问题