Как я могу использовать group_select group_method с областью действия?

Я пытаюсь использовать group_selects group_method с настраиваемой областью действия. Пользователь может видеть только те проекты и задачи, к которым он принадлежит.

Это работает, я получил весь свой проект с задачами для выбора:

# using simple_form
<%= f.input :project_id, :as => :grouped_select,
            :collection => Project.my_scope(current_user),
            :group_method => :tasks %>

Это не работает. Я пытаюсь получить задачи из my_scope.

# using simple_form
<%= f.input :project_id, :as => :grouped_select,
            :collection => Project.my_scope(current_user),
            :group_method => Task.my_scope(current_user) %>

ОБНОВЛЕНИЕ

Я также пробовал это с помощью помощника по умолчанию для рельсов, и это, похоже, работает:

<%= f.grouped_collection_select(:project_id,
                                Project.my_scope(current_user),
                                :"tasks.my_scope(#{current_user.id})",
                                :name, :id, :name) %>

Это обычная практика или есть другие способы удовлетворить мои потребности?


person tonymarschall    schedule 03.05.2012    source источник


Ответы (1)


Это не работает, потому что :group_method указывает, какой метод вызывать, чтобы сгруппировать выборки по тому, что он возвращает.

Таким образом, объем не может быть использован там. Какого результата вы хотите достичь? Вероятно, вы могли бы ограничить свою коллекцию - если вы хотите отображать только проекты с задачами для current_user (только что предполагалось), тогда вы можете сделать что-то вроде этого

# using simple_form
<%= f.input :project_id, :as => :grouped_select,
            :collection => Project.my_scope(current_user).joins(:tasks).where(:assigned_to => current_user),
            :group_method => :task %>
person alony    schedule 03.05.2012
comment
Спасибо за Ваш ответ. Пользователь может принадлежать проекту, но может видеть только задачи, к которым принадлежит пользователь. Ограничение проектов не дает того, что мне нужно. - person tonymarschall; 03.05.2012