-
Type: Task
-
Resolution: Done
-
Affects Version/s: None
-
Component/s: None
I am running on Mongoid 2.2.4.
class Calendar
include Mongoid::Document
include Mongoid::Paranoia
include Mongoid::MultiParameterAttributes
has_and_belongs_to_many :days
def days_by_title
days.unscoped.asc(:title)
end
end
class Day
include Mongoid::Document
include Mongoid::Timestamps
include Mongoid::Versioning
include Mongoid::Paranoia
has_and_belongs_to_many :calendars
default_scope asc(:pos)
field :pos, :type => Integer
field :title, :default => "New Day"
end
Now in after creating a new calendar in the database, try running this in the rails console:
> Calendar.first.days_by_title.options
=> {:sort=>[[:pos, :asc], ["title", :asc]]}
It ignores the call to .unscoped on the days. Must be because it's a HABTM relationship. Not sure if this is by design but it sure would be nice if you could call .unscoped in a situation like this and it would return the days without the default scope (it always returns the relationship with the default scope).
I was able to do a workaround by changing the days_by_title method like such:
def days_by_title
Day.unscoped.any_in(:calendar_ids => [_id]).asc(:title)
end
but it's not as clean or as nice. You'll have to forgive me if this issue has already been addressed in a newer version of Mongoid. I haven't upgraded because we are using MongoHQ, which hasn't rolled their production databases over to MongoDB >= 2.0, so I haven't been able to upgrade Mongoid to the most recent gem version.