Rails 3.0.13, Devise, CanCan и ActiveScaffold; Ruby 1.9.3 194 на RVM (если это имеет значение)Добавление ролей и разрешений для пользователя-разработчика; NoMethodError: неопределенный метод
Я пытаюсь настроить родовые роли для разработчиков и конкретных разрешений (требования в том, что роли имеют разрешения по умолчанию, но разрешения могут быть перезаписаны у пользователя уровень). Ability.rb может использовать метод is_implementer?
без проблем
Keep получаю эту ошибку для роли или user_permissions, если я иду в консоль, назначить пользователя в вар (@user
), а затем сделать @user.role
или @user.user_permissions
:
NoMethodError: undefined method `role' for #<ActiveRecord::Relation:0x98173e8>
from /home/scott/.rvm/gems/[email protected]/gems/activerecord-3.0.13/lib/active_record/relation.rb:374:in `method_missing'
from (irb):7
from /home/scott/.rvm/gems/[email protected]/gems/railties-3.0.13/lib/rails/commands/console.rb:44:in `start'
from /home/scott/.rvm/gems/[email protected]/gems/railties-3.0.13/lib/rails/commands/console.rb:8:in `start'
from /home/scott/.rvm/gems/[email protected]/gems/railties-3.0.13/lib/rails/commands.rb:23:in `<top (required)>'
from script/rails:6:in `require'
from script/rails:6:in `<main>'
Модели:
Класс пользователя
class User < ActiveRecord::Base
has_and_belongs_to_many :user_groups
has_many :user_permissions
belongs_to :role
# Include default devise modules. Others available are:
# :token_authenticatable, :encryptable, :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
# Setup accessible (or protected) attributes for your model
attr_accessible :email, :password, :password_confirmation, :remember_me, :role_id
def is_implementer?
self.role.implementer?
end
end
Разрешение пользователя
class UserPermission < ActiveRecord::Base
belongs_to :user
belongs_to :permission
end
Роль
class Role < ActiveRecord::Base
has_many :default_role_permission
has_many :users
def implementer?
self.name == "Implementer"
end
end
Позвольте мне знать, если вы хотите увидеть что-нибудь еще (например, Способность CanCan.rb).
Запустили ли вы все миграции базы данных? – sczizzo
Да, у меня есть (потребовалось мгновение, чтобы подтвердить, чтобы я не ответил вслепую). – ScottJShea
Что вы делаете в консоли? –