Essentially I am looking for a no-op type of relation to apply to a chain of scopes.
Lets say I have a chain of scopes:
Post.approved.published.all
Now, for debugging purposes, I wish to make the published
scope do nothing at all, so that the chain will only return approved
posts, regardless of whether they are published
or not.
What would I return in the following method:
def self.published
# what to return?
end
Scopes are used to assign complex ActiveRecord queries into customized methods using Ruby on Rails. Inside your models, you can define a scope as a new method that returns a lambda function for calling queries you're probably used to using inside your controllers.
Scopes are custom queries that you define inside your Rails models with the scope method. Every scope takes two arguments: A name, which you use to call this scope in your code. A lambda, which implements the query.
In Ruby on Rails, named scopes are similar to class methods (“class. method”) as opposed to instance methods (“class#method”). Named scopes are short code defined in a model and used to query Active Record database.
Make published
an alias for all
, or use scoped
to return a relation to which additional conditions can be chainged:
def self.published
all
#or
scoped
end
I would use a scope, returning all
...
scope :published, all
or, make it an alias for scoped
:
scope :published, scoped
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With