Направляющие 3 находят все связанные записи has_many: через

Я хотел бы перечислить все сообщения, которые соединены с некоторой определенной категорией и классом.

Я имею:

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

И я хочу сделать что-то вроде этого

Post.where(["category.id = ? AND classroom.id = ?", params[:category_id], params[:classroom_id]])

Это действительно - очень простая задача, но я не знаю то, что я должен искать (ключевые слова).

Это - та же проблема как это, но в направляющих.

Править: Я добавил больше деталей к вопросу. Это работает, но только если у меня есть оба указанные параметрических усилителя. Ведьма не всегда имеет место - я не знаю, какие параметрические усилители были бы указаны.

Post.joins(:categories, :classrooms).where(["categories.id = ? AND classrooms.id = ?", params[:classroom_id], params[:category_id]])

7
задан Community 23 May 2017 в 12:04
поделиться