如何使用 SQL“IN” 带有 Rails Active Record find 和 .map 的语句
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')
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]])
Error:
SQLite3::SQLException: near ",": syntax error: SELECT * FROM "posts" WHERE (role_id = 1,2,3,4 AND created_at > '2009-05-21 11:54:52')
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这个:
改变
change this:
to
我认为 Role_id 中的逗号 = 1,2,3,4。 我认为如果它是字符串,则需要 role_id='1,2,3,4' ;如果您想要对整数进行 OR 样式比较,则需要 role_id IN (1,2,3,4) 。
I think the commas in Role_id = 1,2,3,4. I think it needs to be role_id='1,2,3,4' if its a string or role_id IN (1,2,3,4) if you want an OR style comparison on the integer.