如何检查模型是否定义了范围?

时间:2013-01-23 06:19:25

标签: ruby-on-rails model scope

class Idea < ActiveRecord::Base
  attr_accessible :archived, :checked, :content, :note, :stared

  scope :stared, -> { where(stared: true) 
end

使用此代码,我如何测试stared上是否定义了范围(例如Idea)。我希望有这种效果

Idea.has_scope?(:stared) 
=> true
Idea.has_scope?(:unknown)
=> false

2 个答案:

答案 0 :(得分:1)

您可以使用respond_to?

Idea.respond_to?(:stared)

将产生真/假

答案 1 :(得分:0)

方法:valid_scope_name在内部也使用respond_to? +也是受保护的方法+给出了可怕的日志消息。它可以作为

调用
Idea.send(:valid_scope_name?,:stared)
=> true

但这也大部分都会从边缘栏杆上移除 - git commit