2
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
4

2 に答える 2

1

あなたは単にrespond_toを使用できますか?

Idea.respond_to?(:stared)

true/false が返されます

于 2013-01-23T06:33:54.413 に答える
0

内部的にも使用するメソッド:valid_scope_namerespond_to?があります+ 保護されたメソッドでもあります + ひどいログメッセージが表示されます。として呼び出すことができます

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

しかし、これもほとんどの場合、エッジレールから削除されます - git commit

于 2013-01-23T07:00:35.373 に答える