1
roles = Role.find_all_by_simulation_id(session[:sim_id])
forum_posts = Post.find(:all, :conditions => ["role_id = ? AND created_at > ?", roles.map(&:id), session[:last_login]])

エラー:

SQLite3::SQLException: near ",": syntax error: SELECT * FROM "posts" WHERE (role_id = 1,2,3,4 AND created_at > '2009-05-21 11:54:52') 
4

2 に答える 2

2

これを変える:

forum_posts = Post.find(:all, :conditions => ["role_id = ? AND created_at > ?", roles.map(&:id), session[:last_login]])

forum_posts = Post.find(:all, :conditions => ["role_id IN (?) AND created_at > ?", roles.map(&:id), session[:last_login]])
于 2009-05-21T13:10:34.727 に答える
1

Role_id = 1,2,3,4 のコンマだと思います。文字列の場合は role_id='1,2,3,4' にする必要があると思います。整数で OR スタイルの比較を行う場合は role_id IN (1,2,3,4) にする必要があります。

于 2009-05-21T12:52:56.883 に答える