Определение области поиска для current_user полезно в большинстве случаев, но не учитывает, что пользователь является администратором и имеет доступ к объектам, с которыми он не связан напрямую.
Создайте именованную область в модели, чтобы ограничить выбор записями, принадлежащими пользователю, или любой, если указанный пользователь является администратором. Модель User должна реализовывать метод с именем "is_admin?" возвращает true, если пользователь считается администратором.
Так вы можете позвонить:
my_widgets = Widget.accessible_by(user).find(:all, :conditions => ["created_at > ?", 1.day.ago.to_s(:db)])
class Widget
named_scope :accessible_by, lambda {|u|
conditions = nil
unless u.is_admin?
conditions = ["widgets.user_id = :user_id", {:user_id => u.id}]
end
return {:conditions => conditions}
}
end