我有这样的模型
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
我需要编写没有孩子的所有帖子的范围。任何想法如何做到这一点?
我有这样的模型
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
我需要编写没有孩子的所有帖子的范围。任何想法如何做到这一点?
那个模型没有意义!
孩子自动成为父母。
你到底想做什么?一颗树?
那么你需要添加到迁移
t.integer :parent_id, null: false
在你的模型中
has_one :child, class_name: 'Ads::Posting', foreign_key: :parent_id
为了使它更深,看看
https://github.com/stefankroes/ancestry
也许那对你有帮助。
我相信您可以使用 aLEFT JOIN
和 a 对where
子句的限制来做到这一点。
scope :my_scope,
joins("LEFT JOIN postings ON postings.ad_id = ads.id").where("postings.id IS NULL")