我有这样的模特
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
我需要写一个范围,它可以获得没有孩子的所有帖子。任何想法如何做到这一点?
答案 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 JOIN
和where
子句的限制来执行此操作。
scope :my_scope,
joins("LEFT JOIN postings ON postings.ad_id = ads.id").where("postings.id IS NULL")