Ben bazı özel kategori ve sınıfta bağlantılıdır tüm mesajları listelemek istiyorum yoluyla.Raylar ilişkili tüm kayıtlar has_many bulmak 3:
Ben:
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
Ve gerçekten de çok basit bir iştir bu
Post.where(["category.id = ? AND classroom.id = ?", params[:category_id], params[:classroom_id]])
böyle bir şey yapmak istiyorum, ama aradığım gerektiğini bilmiyorum (anahtar kelimeler) .
O ancak rayların içinde, this gibi aynı problem.
EDIT: Soruya daha fazla ayrıntı ekledim. Bu, ancak her iki param da belirtilmişse çalışır. Cadı her zaman böyle değildir - Hangi paramların belirtileceğini bilmiyorum.
Post.joins(:categories, :classrooms).where(["categories.id = ? AND classrooms.id = ?", params[:classroom_id], params[:category_id]])
, teşekkürler. Ama ya bir tane daha çok birliğe (Sınıflara diyelim ki) o Post'a ve eğer hem Kategori'ye hem de Classroom'a göre bulmak istiyorsam? Post.where gibi bir şey ([ "category.id = VE classroom.id =??" Params [: category_id], params [: classroom_id]]) – Sergey
nasıl bu konuda: Post.where ([ "? Category_id =" , parametreler [: category_id]. [ "? classroom_id =", params [: classroom_id]]) burada() – Chap
@chap Ben Mesaj tabloda bu alanları yok. Bu yüzden soruyorum.Lütfen soruyu okuyun. – Sergey