Пользователь Rails может голосовать только в своем порядке

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

Я новичок в рельсах. В моем приложении я использую устройство + канкан + ролифай. Пользователь с ролью: admin может управлять всем, и это работает очень хорошо, может создавать Заказ и голосовать за или против. Далее я хочу, чтобы пользователь с ролью :loc_adm мог создавать заказы и голосовать только за свои заказы. Но вот моя проблема. Когда я стараюсь в своих силах:

def initialize(user)
user ||= User.new
if user.role? :admin
 can :manage, :all
else
 if user.role? :lok_adm 
  can :manage, Order, :user_id => user.id
  can :manage, Vote, :user_id => user.id
 end
 can :read, :all
end

User with role :lok_adm can voted not only in own order. Below i send my models.

class Order
 belongs_to :user
 has_many :votes

class Vote
 belongs_to :user
 belongs_to :order

class User
 has_many :orders
 has_many :votes

person Panczo    schedule 26.02.2014    source источник


Ответы (1)


Вы не установили то, чем они не могут управлять. Добавлять

cannot :manage, :all

Над тем, что они могут управлять lok_adm

Вы также можете сделать

if condition
elsif another_condition
end

Скорее, чем

if
else
  if
  end
end
person j-dexx    schedule 26.02.2014
comment
Спасибо, это работает, но теперь у меня следующая проблема, у меня есть ссылка current_user, по которой пользователь переходит на страницу пользователя/показа и видит весь свой заказ, но теперь я вижу всплывающее сообщение, у вас нет прав доступа к этой странице - person Panczo; 26.02.2014
comment
Так что вам нужна еще одна банка can :manage, User, :user_id => user.id - person j-dexx; 26.02.2014
comment
Когда я пытаюсь это сделать, у меня возникает ошибка неопределенного метода 'user_id' для # класса - person Panczo; 26.02.2014
comment
Ой извините, вы хотите удостоверение личности. Я не должен просто копировать вещи can :manage, User, :id => user.id - person j-dexx; 26.02.2014
comment
Спасибо :) теперь все в порядке. - person Panczo; 26.02.2014