Me gustaría enumerar todas las publicaciones que están conectadas con una categoría específica y un aula.Rails 3 encuentra todos los registros asociados has_many: a través de
tengo:
class Post < ActiveRecord::Base
has_many :category_posts
has_many :categories, :through => :category_posts
has_many :classroom_posts
has_many :classrooms, :through => :classroom_posts
end
class Category < ActiveRecord::Base
has_many :category_posts
has_many :posts, :through => :category_posts
end
class CategoryPost < ActiveRecord::Base
belongs_to :category
belongs_to :post
end
class Classroom < ActiveRecord::Base
has_many :classroom_posts
has_many :posts, :through => :classroom_posts
end
class ClassroomPost < ActiveRecord::Base
belongs_to :classroom
belongs_to :post
end
Y quiero hacer algo como esto
Post.where(["category.id = ? AND classroom.id = ?", params[:category_id], params[:classroom_id]])
De hecho, es tarea muy simple, pero no sé lo que debería estar buscando (palabras clave) .
Es el mismo problema que this, pero en los rieles.
EDIT: He añadido más detalles a la pregunta. Esto funciona, pero solo si tengo ambos parámetros especificados. La bruja no siempre es el caso, no sé qué parametros se especificarían.
Post.joins(:categories, :classrooms).where(["categories.id = ? AND classrooms.id = ?", params[:classroom_id], params[:category_id]])
Eso funciona, gracias. Pero, ¿qué sucede si tengo una asociación más de muchos a muchos (digamos aulas) para esa publicación y quiero encontrar ambas por categoría y por aula? Algo así como Post.where (["category.id =? AND classroom.id =?", Params [: category_id], params [: classroom_id]]) – Sergey
¿Qué tal esto: Post.where (["category_id =?" , params [: category_id]). where (["classroom_id =?", params [: classroom_id]]) – Chap
@chap No tengo esos campos en la tabla Publicar. Es por eso que estoy preguntando.Por favor lea la pregunta. – Sergey