ActiveRecord错误问题

gla*_*kou 1 ruby ruby-on-rails ruby-on-rails-3

有人能指出我在这个陈述中的错误吗?

2011-08-19T20:16:05+00:00 app[web.1]: ActiveRecord::StatementInvalid (PGError: ERROR:  argument of AND must be type boolean, not type integer
2011-08-19T20:16:05+00:00 app[web.1]: : SELECT "app_permissions".* FROM "app_permissions" WHERE (user_id = 1,2 AND is_shared = 't' AND app_id = '1')):
2011-08-19T20:16:05+00:00 app[web.1]:
Run Code Online (Sandbox Code Playgroud)

码:

AppPermission.find(:all, :conditions => ["user_id = ? AND is_shared = ? AND app_id = ?", User.find_all_by_facebook_id(@friends_uids).collect { |itm| itm["id"] }, true, @appl_id])
Run Code Online (Sandbox Code Playgroud)

谢谢

Ser*_*abe 9

错误是在第一个/第二个AND条件下.您可能希望将其更改为:

AppPermission.find(:all,
  :conditions => ["user_id in (?) AND is_shared = ? AND app_id = ?",
              User.find_all_by_facebook_id(@friends_uids).collect { |itm| itm["id"] }, 
              true, @appl_id])
Run Code Online (Sandbox Code Playgroud)

编辑:你需要IN (?)因为你得到一个集合,而不仅仅是一个值,看看你的日志中的最终查询,你会看到它(1,2)