Извлечение значений из таблицы отношений has_and_belongs_to_many на Rails5

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4 #ruby-on-rails-5

#ruby-on-rails #ruby-on-rails-3 #ruby-on-rails-4 #ruby-on-rails-5

Вопрос:

У меня есть две таблицы Role и User, и я связал эти две таблицы с помощью связи has_and_belongs_to_many с rails.

Я успешно вставляю данные в третью таблицу, которая создается отношением has_and_belongs_to_many. Используя следующий код

 def create
user_params[:password] = User.hash(user_params[:password])
@user = User.new(:first_name => user_params[:first_name],
                 :last_name=>user_params[:last_name],
                 :email => user_params[:email],
                 :contact_number=>user_params[:contact_number],
                 :password=>user_params[:password])

@roles = user_params[:roles];
for role in @roles
  @user.roles << Role.find(role)
end
if @user.save
  respond_to do |format|
    msg = { :status => "ok", :message => "User Creation Success!" }
    format.json  { render :json => msg }
  end
end
end
  

Теперь моя проблема в том, как мне прочитать значения из таблицы отношений и как мне обновить любое значение в таблице отношений.

Ответ №1:

Предположим, вы настроили роли пользователей вашей модели следующим образом:

 class User < ActiveRecord::Base
  has_and_belongs_to_many :roles
end

class Role < ActiveRecord::Base
  has_and_belongs_to_many :users
end
  

Abd добавлена users_roles_table таблица
Затем вы можете извлекать связанные данные, как обычно, говоря

User.first.роли

и

Роль.первая.пользователи