Я пытаюсь сделать приложение в Rails 4. Я использую программу для проверки подлинности и эксперта для авторизации. Я хочу использовать разрешения Rolify для роли.Rails 4 - Настройка Rolify с помощью devise и pundit - отношения
Я разместил этот вопрос и получил несколько полезных советов. Defining Roles with Rolify
Я создал контроллер и виды, потому что хочу, чтобы роли назначались другими пользователями и подчинялись критериям (например, периоды владения, например: студент будет выполнять роль студента до конца своей даты курса) ,
Я также хочу иметь возможность добавлять новые роли по мере того, как приложение расширяется.
Я использовал seeds.rb для создания начальных ролей. Я еще не ограничил использование ролей администратором, но сделаю политику сообщества, чтобы сделать это, как только у меня это настроено и работает.
У меня нет большого опыта в отношениях HABTM, и я застрял в попытке понять, как они работают.
Я хочу создать страницу показа для своих ролей - которая показывает каждого пользователя, которому была назначена роль.
у меня есть:
<div class="formheader"><td><%= @role.name %></td></div>
<div class="row">
<div class="table-responsive" style="margin-left:30px; margin-top:15px">
<table class="table table-bordered">
<tr>
<td><span class="intpolth">User</span></td>
<td><span class="intpolth">Commenced</span></td>
<td><span class="intpolth">Terminated</span></td>
</tr>
<% @roles.user.each do |role| %>
<tr>
<td><%= user.formal_name %></td>
<td></td>
<td></td>
<td></td>
<td></td>
<td></td>
</tr>
<% end %>
На данный момент, я думаю, что моя ошибка может быть больше, чтобы сделать с тем, как выразить HABTM присоединяется чем, как работать с Rolify - но кто может видеть то, что я сделал неправильно ? Цель этой таблицы - составить список каждого имени пользователя, которому была выделена соответствующая роль.
Я получаю сообщение об ошибке при попытке это:
undefined method `user' for nil:NilClass
Я заметил, что мое rolify Миграции сделала присоединиться к таблице под названием «users_roles». Я понял, что соглашение является именем таблицы, которое было указано в алфавитном порядке и что первое имя таблицы было сингулярным, а не множественным. Может ли это иметь какое-то отношение к моей проблеме?
Все, что я на данный момент является методом в моей модели пользователя, который говорит:
after_create :add_default_role
def add_default_role
add_role(:guest) if self.roles.blank?
end
Я сделал роли в моем seeds.rb, которые включают в себя: гость.
Моя консоль показывает, у меня есть эта роль:
Role Load (4.2ms) SELECT "roles".* FROM "roles" WHERE "roles"."name" = $1 [["name", "guest"]]
=> #<ActiveRecord::Relation [#<Role id: 23, name: "guest", resource_id: nil, resource_type: nil, created_at: "2016-01-16 09:46:16", updated_at: "2016-01-16 09:46:16">]>
Я просто начать и изо всех сил, чтобы понять, как это работает.
Я должен сказать, что генератор для этого драгоценного камня сделал образец для подражания, но в нем ничего нет. Нужно ли мне что-то добавлять в ролевую модель, чтобы заставить это работать?
class Role < ActiveRecord::Base
end
@roles является 'nil'. Можем ли мы видеть, что вы назначаете '@ role'? – mrdougwright