Я довольно новичок в рельсах, и я впервые использую authlogic + acl9. Я выполнил шаги установки по умолчанию для обоих плагинов.
Пока все отлично работает, но у меня проблемы с поиском элегантного решения этой проблемы:
Допустим, у меня есть класс моделей под названием Products. При создании нового объекта Product я назначаю current_user в качестве владельца:
current_user.has_role! :owner, @product
Я зарегистрировал второго пользователя и убедился, что эта часть работает.
В контроллере продуктов у меня есть метод индекса, просто возвращающий все продукты:
def index
@products = Products.all
end
Мой вопрос таков: как я могу вызвать метод find для Products, чтобы получить только те продукты, в которых current_user является владельцем: owner?
Так что я использовал интерфейс acl9, что означало бы:
@product.accepts_role?(:owner, current_user)
Одна из возможностей, вероятно, заключается в том, чтобы сначала получить все продукты, а затем создать новый массив, содержащий только значения current_user. так что может быть так:
@products = []
products = Products.all
products.each do |p|
@products << p if p.accepts_role?(:owner, current_user)
end
Это решение кажется довольно расточительным. Итак, как правильно это сделать?
Спасибо всем!