Чтобы посмотреть экземпляр в User
модели из подобласти текущего URI, вы могли бы сделать что-то похожее на следующее (простой, сырой, например, на цели):
Посмотрите пользователя с помощью крючка в ApplicationController
class ApplicationController < ActionController::Base
# ...
before_action :lookup_user_from_subdomain
# ...
def lookup_user_from_subdomain
@subdomain_user = User.where(username: request.subdomain).first
# Do stuff with @subdomain_user, and/or handle User not found,
# check that subdomain != 'www' if you need to, etc.
end
# ...
end
Гелашвили из UserController
class UserController < ApplicationController
# ...
def subdomain_profile
@profile = @subdomain_user.profile if @subdomain_user.present?
# You may want to check for request.xhr? and handle
# respnding to js/json here, for ajax requests to display
# profile in a sidebar or somewhere else besides a profile
# page.
# Or, just simply render the profile of the subdomain-user here.
end
# ...
end
Примечание. Я использовал before_action
, что является более новым (Rails ~ 5) соглашением, а не before_filter
.
Вы можете увидеть больше информации о request
объекта here, и больше на ActionController
фильтры here.
Отъезд this Railscast on subdomains для получения дополнительной информации и, в частности, домена http://lvh.me:3000/ для проверки субдоменов в локальном dev.
Если вы планируете выполнять некоторые сверхмощные вещи, такие как данные с доступными областями для каждого поддомена (пользователя) или использовать разные базы данных для каждого пользователя, или каким-то образом обрабатывать приложение по-разному для каждого пользователя, посмотрите Acts as Tenant gem , Он управляет несколькими арендаторами в приложении Rails и имеет встроенную поддержку для загрузки пользователей или учетных записей через субдомены.
спасибо. Есть ли что-то, что мне нужно сделать, чтобы убедиться, что весь поддомен попал в мое приложение Rails? – slindsey3000
@ slindsey3000 его вероятность того, что есть, но, вероятно, что-то, что имеет место в настройках вашего DNS или веб-сервера. – Todd