Вы устанавливаете @ default_scope_conditions - переменную экземпляра из контроллера и ожидаете прочитать ее из модели . Он не виден из модели, если не передан в качестве параметра метода.
Более того, этот подход нарушил бы принцип MVC, отделяющий логику модели от логики контроллера: ваша модель не должна автоматически получать информацию о текущем состоянии контроллера.
Что вы можете сделать: использовать анонимные области.
def scope_user
if some_condition
@default_scope_conditions = something
elsif another_condition
@default_scope_conditions = something_else
end
@user_scoped = User.scoped(:conditions => @default_scope_conditions)
end
Тогда в вашем методе вы можете:
def my_method
users = @user_scoped.all
end
или
def my_method
User.with_scope(:conditions => @default_scope_conditions) do
# ..
@users = User.all #users get scoped
@products.users # also gets scoped
end
end