Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
ActiveRecord:“WHERE IN”SQL语句_Sql_Ruby On Rails_Activerecord - Fatal编程技术网

ActiveRecord:“WHERE IN”SQL语句

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

我有以下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_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。