Ruby on Rails: рендеринг JSON-шоу с одного контроллера на другой - PullRequest
0 голосов
/ 04 ноября 2018

У меня есть API Ruby on Rails 5.2 для бэкэнда и Angular 6 для веб-интерфейса. Пользователи заходят с другого сайта на этот. У меня есть subscription_controller, который получает данные с первого веб-сайта, и у меня есть user_controller, в котором есть все данные о пользователях для использования в интерфейсе. Я хочу вызвать show def user_controller из subscription_controller с соответствующим идентификатором.

subscription_controller

class SubscriptionsController < ApiController
  def login
    name = params["name"]
    email = params["email"]
    organization_name = params["organization"]
    current_user = User.find_by(email: email)
    if current_user
      ##### render show JSON of user_controller for current_user #####
      puts "redirect to frontend"
    else
      current_user = User.create(name: name, email: email)
      subscription_id = find_the_right_subscription(email, organization_name)
      current_user.subscription_id = subscription_id
      current_user.save
      ##### render show JSON of user_controller for current_use #####
      puts "redirect to frontend"
    end
  end

  def find_the_right_subscription(email, organization_name)
    email_domain = email.split("@").last
    found_subscriptions = Subscription.where("organization like ? or domain like ?","%#{organization_name}%","%#{email_domain}%")
    if found_subscriptions.empty?
      subscription = Subscription.find_by(name: 'Default Subscription')
    else
      subscription = found_subscriptions.first
    end
    return subscription.id
  end
end

user_controller

class UsersController < ApiController
  def show
    @user = User.find(params[:id])
    render json: @user, root: 'User', include: ['*', 'subscription', 'user_courses']
  end


  def index
    @users = User.all
    render json: @users, root: 'Users', include: ['*' ,'user_courses', 'courses']
  end

  def update
    @user = User.find(params[:id])
    uc = UserCourse.where(user_id: params[:id], course_id: params[:course_id]).first
    uc.update_attributes(completed_quizzes: params[:completed_quizzes]) if params[:completed_quizzes]
    uc.update_attributes(completed_lessons: params[:completed_lessons]) if params[:completed_lessons]
    uc.update_attributes(completed: params[:completed]) if params[:completed]
  end
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...