Returns a chainable relation with zero records.
The returned relation implements the Null Object pattern. It is an object with defined null behavior and always returns an empty array of records without querying the database.
Any subsequent condition chained to the returned relation will continue generating an empty relation and will not fire any query to the database.
Used in cases where a method or scope could return zero records but the result needs to be chainable.
@posts = current_user.visible_posts.where(name: params[:name]) # => the visible_posts method is expected to return a chainable Relation def visible_posts case role when 'Country Manager' Post.where(country: country) when 'Reviewer' Post.published when 'Bad User' Post.none # It can't be chained if  is returned. end end
# File activerecord/lib/active_record/relation/query_methods.rb, line 690 def none where("1=0").extending!(NullRelation) end