Comment puis-je utiliser un SQL « IN » déclaration avec rails active Enregistrement et trouver .map

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

  •  23-08-2019
  •  | 
  •  

Question

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

Erreur:

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

La solution

modifier ceci:

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

Autres conseils

Je pense que les virgules dans ROLE_ID = 1,2,3,4. Je pense qu'il doit être ROLE_ID = « 1,2,3,4 » si sa chaîne ou ROLE_ID IN (1,2,3,4) si vous voulez une comparaison de style ou sur le nombre entier.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top