I have a default scope on products due to information security constraints.
class Product < ActiveRecord::Base
has_many :photos
default_scope where('visible = 1')
end
In my associated Photo model, however, I also have to find products that should not be visible.
class Photo < ActiveRecord::Base
belongs_to :product
end
my_photo.product
In other cases, I can use unscoped in order to bypass the default_scope, e.g. in Product.unscoped.find_by_title('abc')
. However:
How to remove the scope when using associations of a record?
my_photo.unscoped.product
does not make sense as my_photo does not have a method called unscoped
. Neither does my_photo.product.unscoped
make sense as my_photo.product
may already be nil.
belongs_to :product, ->{ unscope(where: :visible) }
– Metallo