У меня есть 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