ActiveRecord:“WHERE IN”SQL语句
我有以下SQL语句: 在“从父项id=3的类别中选择id”中,从类别id所在的出版物中选择文章id 如何将其转换为Rails ActiveRecord 我尝试过:Article.find:all,:conditions=>[publications.category_id IN,3],:include=>[:publications],它返回空数组 型号:ActiveRecord:“WHERE IN”SQL语句,sql,ruby-on-rails,activerecord,Sql,Ruby On Rails,Activerecord,我有以下SQL语句: 在“从父项id=3的类别中选择id”中,从类别id所在的出版物中选择文章id 如何将其转换为Rails ActiveRecord 我尝试过:Article.find:all,:conditions=>[publications.category_id IN,3],:include=>[:publications],它返回空数组 型号: class Article < ActiveRecord::Base has_many :publications has_m
class Article < ActiveRecord::Base
has_many :publications
has_many :categories, :through => :publications
class Category < ActiveRecord::Base
belongs_to :parent, :class_name => 'Category'
has_many :children, :class_name => 'Category', :foreign_key => :parent_id
has_many :articles, :through => :publications
has_many :publications
class Publication < ActiveRecord::Base
belongs_to :article
belongs_to :category
这样行吗
Article.find(:all,
:conditions => ["publications.category_id IN(SELECT id FROM categories WHERE parent_id = ?)", 3],
:include => [:publications])
我建议您使用来表示数据库中的树结构,还有一个模型是什么样子的 您需要在文章、类别和发布模型中正确设置关联
听起来您的表中设置了相关的外键,但是您的模型不知道如何查找关联您可以发布您的关联代码有多个、属于多个等,用于出版物、文章和类别吗?我怀疑你可能有什么问题。我不认为这是正确的-根据SELECT声明,在我看来他的出版物属于:类别,类别有很多:出版物。我需要看看他的协会。哎呀,还没有刷新。@narkoz我仍然希望看到您的模型,我认为通过适当的关联,您可以避免:条件中硬编码的SQL。