Как назначить роль пользователю в has_many: через отношения через консоль? - PullRequest
0 голосов
/ 22 апреля 2019

У меня есть 2 модели Пользователь и Роль , и has_many: через отношения между ними

class User < ApplicationRecord
  has_many    :user_roles,             
  has_many    :roles,  through: :user_roles
end

и

class Role < ApplicationRecord
  has_many    :user_roles, 
  has_many    :users, :through => :user_roles
end

иотносительная модель

class UserRole < ApplicationRecord
  belongs_to :user
  belongs_to :role
end

Вопрос в том, как назначить роль конкретному пользователю через консоль.Я пытался с

>User.last.roles = [:admin] (Role which I want to assign has name: admin and role_id: 1)

, но я получаю ошибку

ActiveRecord :: AssociationTypeMismatch (ожидается роль (# 47275896707120), получил: admin, который является экземпляром Symbol (# 47275846312980)))

Ответы [ 2 ]

1 голос
/ 23 апреля 2019

Передайте экземпляр роли:

User.last.roles << Role.find_by(name: :admin)

Вы также хотите использовать оператор << (лопата) для добавления в ассоциацию, а не установщик, который заменит ее.

1 голос
/ 23 апреля 2019

Вам просто нужно передать экземпляр роли:

admin_role = Role.find(...)
User.last.roles = [admin_role]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...