Как я могу использовать оператор SQL "IN" с рельсами Active Record find и .map - PullRequest
1 голос
/ 21 мая 2009
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') 

Ответы [ 2 ]

2 голосов
/ 21 мая 2009

изменить это:

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]])
1 голос
/ 21 мая 2009

Я думаю запятые в Role_id = 1,2,3,4. Я думаю, что это должен быть role_id = '1,2,3,4', если это строка или role_id IN (1,2,3,4), если вы хотите сравнение стиля OR для целого числа.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...