どのように私は、アクティブレコードを見つけレールと.MAPと声明「の」SQLを使用することができます

StackOverflow https://stackoverflow.com/questions/892777

  •  23-08-2019
  •  | 
  •  

質問

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') 
役に立ちましたか?

解決

これを変更:

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]])

他のヒント

私はROLE_ID = 1,2,3,4でコンマと思います。私はそれがその文字列またはIN(1,2,3,4)をROLE_ID場合は、整数のORスタイルの比較をしたい場合=「1,2,3,4」をROLE_IDすることが必要だと思います。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top