1
두 개의 서로 다른 도메인이있는 하나의 응용 프로그램이 있습니다. 사용자 모델을 교차시킵니다. 나는 Devise에 로그인/아웃을했습니다. 각 도메인에 대해 세션을 만드는 방법은 무엇입니까?하나의 레일 응용 프로그램, 두 개의 도메인, 각기 다른 세션
두 개의 서로 다른 도메인이있는 하나의 응용 프로그램이 있습니다. 사용자 모델을 교차시킵니다. 나는 Devise에 로그인/아웃을했습니다. 각 도메인에 대해 세션을 만드는 방법은 무엇입니까?하나의 레일 응용 프로그램, 두 개의 도메인, 각기 다른 세션
편집 당신은 URL에 의해 확인하거나 당신이 도메인 선택과 식별해야
.
도메인별로 식별되는 예입니다. 문자열, 사용자 : 그러나 당신은 당신의 환경
http://www.domain1.com
`레이크 g 모델 도메인 이름에 적응해야합니다
#의 domain.rb
Class Domain < ActiveRecord::Base
belongs :user
end
#의 user.rb belongs_to
Class User < ActiveRecord::Base
...
has_many :domains
end
레일 콘솔
User.find(1).domains.create(name:'www.domain1.com')
User.find(1).domains.create(name:'www.domain2.com')
#의 application_controller.rb는
helper_method :current_domain
def current_domain
domain = request.host
Domain.find_by_name(domain)
end
을 #EDITED 당신은 세션 컨트롤러에 새로운 당신을 수정할 필요
<%= f.hidden_field :user, :domain_id, value: current_domain.try(:id)
new.html.slim
# 응용 프로그램/조회/세션/귀하의 설정/이니셜 라이저/devise.rb
config.authentication_keys = [ :email, :domain_id ]
# 응용 프로그램/모델/user.rb
devise authentication_keys: {email:true, login:false, domain_id:true}
def self.find_first_by_auth_conditions(warden_conditions)
conditions = warden_conditions.dup
domain_id = conditions.delete(:domain_id)
where(conditions).joins(:domains).where('domains.id = :value', {:value => domain_id }).first
end
사용자는 도메인 – stereodenis
사이에 공유되는'application_controller.rb' 대신'application.rb' –
내가 코드를 두 번보고 내 생각은 곧 – stereodenis