Using ActiveRecord's scope instruction to return a single result
-
30-01-2021 - |
Question
I have the following class that works fine in my unit tests but I feel it could be simpler.
class License < ActiveRecord::Base
scope :active, lambda {
where("active_from <= ?", Date.today).order("version_number DESC")
}
end
def current_license
return License.active.first
end
public :current_license
I have tried appending the .first
into the lambda
clause but that causes an error.
How do I tell the scope
I only want the first result, and thus eliminate the method current_license
completely?
Solution
Make it a method, and you can get this:
class License < ActiveRecord::Base
def self.current_license
return License.where("active_from <= ?", Date.today).order("version_number DESC").first
end
end
As for the number of results, try to add a .limit(1)
. For more info, have a look here.
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow