действительно может использовать вашу помощь, понимая эту сложную проблему с рельсами, которую я стучал головой об стену ...
У меня есть следующие модели:
Permissions (user_id, role_id, project_id)
Roles (id, name)
Projects (id, name)
Разрешениямодель Y для ролей и проектов.
Я изо всех сил пытаюсь создать форму, позволяющую пользователю либо добавить, либо обновить разрешение проекта пользователя
В контроллере у меня есть:
@project = Space.find(params[:project_id])
@permission = @project.permissions.find_by_user_id(params[:user_id])
И затемв представлении:
<%=form_for [:space, @permission] do |f| %>....
Но это не работает, ошибки:
Если критерии (пользователь и проект) не имеют записей вБД: "неопределенный метод` имя_модели 'для NilClass: Class "
Если в БД есть запись, то есть пользователь имеет роль в этом проекте: "No route matches {:action=>"destroy", :controller=>"permissions", :project_id=>#<Permission project_id: 3, role_id: 2, user_id: 13>}"
В идеале, я хочу, чтобы эта форма показывала текущее разрешение, если оно есть, для данного (Используется / Проект) ... Если нет текущего разрешения, я хочу, чтобы человек былв состоянии создать запись.
Кто-нибудь испытывает подобные отношения в Rails 3?Спасибо за любые советы, которые вы можете отправить мне.
Файл маршрутов (часть, специфичная для этих моделей)
resources :projects do
resources :photos, :permissions
collection do
get 'yourcurrentprojects'
end
end
Контроллеры - путь, по которому пользователи дают возможность CRUD разрешение: /projects/3/permissions
- Я полагаю, что я хотел бы использовать Permissions.rb def Показывать и определять обновления для получения и установки разрешений?