Как я могу использовать инструкцию SQL “IN” с rails Active Record find и .map

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.Я думаю, что это должно быть role_id='1,2,3,4', если это строка или role_id В (1,2,3,4), если вы хотите сравнить стиль OR с целым числом.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top