Ruby on rails Rails范围检查是否没有关联
我有一个Ruby on rails Rails范围检查是否没有关联,ruby-on-rails,Ruby On Rails,我有一个类别模型,其中类别可能有一些子类别(类别.类别)。我想要一个范围,该范围为我提供所有没有子类别的类别 换句话说,我会写作 without_subcategories = Category.select{|category| category.categories.none?} 但是我想把它写成范围。我该怎么做 如果不清楚,这是我的模型: class Category < ActiveRecord::Base belongs_to :parent, class_name: 'C
类别
模型,其中类别
可能有一些子类别(类别.类别
)。我想要一个范围,该范围为我提供所有没有子类别的类别
换句话说,我会写作
without_subcategories = Category.select{|category| category.categories.none?}
但是我想把它写成范围
。我该怎么做
如果不清楚,这是我的模型:
class Category < ActiveRecord::Base
belongs_to :parent, class_name: 'Category'
has_many :categories, foreign_key: :parent_id, class_name: 'Category'
scope :without_subcategories, lambda { WHAT GOES IN HERE? }
end
类别
最佳实践是通过实现计数器缓存来最小化数据库查询。
在rails中,这是一个超级简单的方法,它将一个选项:counter\u cache=>true
添加到“所属对象”关联中。这假设您在categories db表中创建了一个“categories\u count”
整数列。鉴于此,您的范围很小
class Category < ActiveRecord::Base
belongs_to :parent, class_name: 'Category', :counter_cache => true
has_many :categories, foreign_key: :parent_id, class_name: 'Category'
scope :without_subcategories, where(categories_count: 0)
end
类别true
有很多:类别,外键::父项id,类名:'Category'
范围:无子类别,其中(类别计数:0)
结束
希望这有所帮助。最佳实践是通过实现计数器缓存来最小化数据库查询。
在rails中,这是一个超级简单的方法,它将一个选项:counter\u cache=>true
添加到“所属对象”关联中。这假设您在categories db表中创建了一个“categories\u count”
整数列。鉴于此,您的范围很小
class Category < ActiveRecord::Base
belongs_to :parent, class_name: 'Category', :counter_cache => true
has_many :categories, foreign_key: :parent_id, class_name: 'Category'
scope :without_subcategories, where(categories_count: 0)
end
类别true
有很多:类别,外键::父项id,类名:'Category'
范围:无子类别,其中(类别计数:0)
结束
希望这能有所帮助。我使用的是rails 3.2、activerecord和postgresql。我使用的是rails 3.2、activerecord和postgresql。在这种情况下,你甚至不需要lambda
,只要范围:没有子类别,其中(:categories\u count=>0)就足够了。在这种情况下,你甚至不需要lambda
,只要范围:没有子类别,其中(:categories\u count=>0)
就足够了。