轨道范围模型没有关系

时间:2013-01-14 15:46:04

标签: ruby-on-rails scope rails-activerecord named-scope active-relation

我有这样的模特

class Ads::Posting < ActiveRecord:Base
  has_one :child, class_name: 'Ads::Posting', foreign_key: :posting_id
  belongs_to :parent, class_name: 'Ads::Posting', foreign_key: :posting_id
end

我需要写一个范围,它可以获得没有孩子的所有帖子。任何想法如何做到这一点?

2 个答案:

答案 0 :(得分:0)

该模型没有意义!

孩子自动成为父母。

你到底想要做什么?一棵树?

然后你需要添加到迁移

t.integer :parent_id, null: false

并在您的模型中

has_one :child, class_name: 'Ads::Posting', foreign_key: :parent_id

让它更深入,看看

https://github.com/stefankroes/ancestry

也许这会帮助你。

答案 1 :(得分:0)

我相信您可以使用LEFT JOINwhere子句的限制来执行此操作。

scope :my_scope, 
  joins("LEFT JOIN postings ON postings.ad_id = ads.id").where("postings.id IS NULL")