Logic duplication in scopes & predicates

Consider something like that in a model:

scope :recommended, → { where(‘editors_selection OR rating > 9’) }

def recommended? editors_selection? || rating > 9

end

``

How to DRY it up?

scope :recommended, → { where(recommended_condition) }

def recommended?

eval(recommended_condition(“||”))

end

def recommended_condition(selector = “OR”)

“editors_selection #{selector} rating > 9”

end

tiny update -

scope :recommended, → { where(self.recommended_condition) }

def recommended?

eval(self.class.recommended_condition(“||”))

end

def self.recommended_condition(selector == “OR”)

‘editors_selection #{selector} rating > 9’

end