2012-05-03 3 views
0

Я пытаюсь использовать grouped_selects group_method с настраиваемой областью. Пользователь может видеть только проекты и задачи, к которым он принадлежит.Как я могу использовать grouped_select 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) %> 

UPDATE

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

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

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

ответ

3

Это не работает, потому что :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 %> 
+0

Спасибо за ваш ответ. Пользователь может принадлежать проекту, но может видеть только задачи, к которым принадлежит пользователь. Ограничивающие проекты не достигают того, что мне нужно. – tonymarschall