首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ActiveRecord:"WHERE IN“SQL语句

ActiveRecord:"WHERE IN“SQL语句
EN

Stack Overflow用户
提问于 2011-06-25 09:24:23
回答 2查看 2.2K关注 0票数 2

我有以下SQL语句:SELECT article_id FROM publications WHERE category_id IN (SELECT id FROM categories WHERE parent_id = 3)

如何将其转换为Rails ActiveRecord?

我已经尝试过了:Article.find(:all, :conditions => ["publications.category_id IN(?)", 3], :include => [:publications]),它返回空数组。

型号:

代码语言:javascript
复制
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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-06-25 09:38:52

这样行得通吗?

代码语言:javascript
复制
Article.find(:all, 
             :conditions => ["publications.category_id IN(SELECT id FROM categories WHERE parent_id = ?)", 3], 
             :include => [:publications])

我建议你用ancestry来表示数据库中的树形结构,还有a railcast about ancestry

票数 3
EN

Stack Overflow用户

发布于 2011-06-25 09:39:44

你的模型是什么样子的?

您需要在文章、类别和发布模型中正确设置关联。

听起来您已经在表中设置了相关的外键,但是您的模型不知道如何查找关联

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6475192

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档