В моем приложении Пользователи создают сообщения и другие пользователи с ролью «исполнитель» создают комментарии Я использую cancan, что мне нужно делать, если создавать комментарии могут Пользователи с ролью «исполнитель» и пользователь, создающие сообщение, но не могут создавать комментарии к другие сообщения?Как добавить способность cancan, если мне нужно, чтобы пользователь мог создавать комментарии только для своих сообщений?
if user.has_role? :executor
can :manage, [Responce, Comment]
else
can :read, :all
end
if user.has_role? :customer
can :manage, Post
can :manage, Comment, :user => {user_id: user.id}
else
can :read, :all
end
Comment.rb
class Comment < ActiveRecord::Base
acts_as_nested_set :scope => :attachable
belongs_to :attachable, :polymorphic => true
has_many :comments, :as => :commentable
belongs_to :user
end
class User < ActiveRecord::Base
before_create :create_role
has_many :posts
has_many :comments, as: :attachable
has_many :users_roles, dependent: :destroy
has_many :roles, through: :users_roles
def has_role?(role_sym)
roles.any? { |r| r.name.underscore.to_sym == role_sym }
end
private
def create_role
self.roles << Role.find_by_name(:customer)
end
end
что вы хотите достичь? Не могли бы вы перефразировать, я не могу это получить. –
Да как обычно у начинающих) на ломаном английскей языку хочу то не знаю что)))) нужно было чтобы юзер мог комментировать только свои посты, но никак не другие, в коментах полиморфизм, не знал как его использовать в таких случаях))) ребята с тостера помогли) Спасибо – user3089327