Как назначить пользователя в отель при приглашении пользователя с помощью devise_invitable - PullRequest
0 голосов
/ 29 октября 2019

Я пытаюсь назначить пользователя в отель, когда приглашаю его с помощью драгоценного камня devise_invitable.

В моем приложении администратор может приглашать пользователей. URL-адрес приглашения в порядке, но приглашенный пользователь получает доступ к всем отелям администратора вместо текущего отеля , от которого администратор приглашает их.

отправляемых приглашений (hotel.id = 109)

http://localhost:3000/users/invitation/new.109

маршруты

Rails.application.routes.draw do
  devise_for :users
  resources :hotels do
    resources :users
end

модели

class User < ApplicationRecord
  has_many :user_hotels, dependent: :destroy
  has_many :hotels, through: :user_hotels
  enum role: [:owner, :admin, :employee, :accountant]
  devise :invitable, :database_authenticatable, :registerable,
         :recoverable, :rememberable, :validatable, :invitable
end

class UserHotel < ApplicationRecord
  belongs_to :hotel
  belongs_to :user
end

class Hotel < ApplicationRecord
  has_many :user_hotels, dependent: :destroy
  has_many :hotels, through: :user_hotels
end

users_controller.rb

class UsersController < ApplicationController
  before_action :set_user, only: [:show, :edit, :update, :destroy]


  # GET /users/new
  def new
    @hotel = Hotel.find(params[:hotel_id])
    @user = User.new
    @user.hotel = @hotel
    authorize @user
  end

  # POST /users
  # POST /users.json
  def create
    @user = User.new(user_params)
    @hotel = Hotel.find(params[:hotel_id])
    @user.hotel = @hotel
    respond_to do |format|
      if @user.save
        format.html { redirect_to hotel_users_path(@hotel), notice: 'User was successfully created.' }
      else
        format.html { render :new }
        format.json { render json: @user.errors, status: :unprocessable_entity }
      end
    end
  end


  private
    # Use callbacks to share common setup or constraints between actions.
    def set_user
      @user = User.find(params[:id])
    end

    def user_params
      params.require(:user).permit(:email, :role, :hotel_id)
    end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...