2014-10-15 2 views
1

내 Rails 응용 프로그램에는 특정 전자 메일 (사용자 인증을 위해 Devise 사용)으로 로그인 한 사용자에게만 열려있는 기능이 있습니다. 내가 좋아하는 설정 변수를 사용하는 방법에 대한 생각, 다른 한편으로는 생산에서여러 값을 가진 vars 구성

privileged_users: ['[email protected]', '[email protected]'] 

: 사용자가 나는대로 권한이있는 사용자를 설정 config/settings/test.yml에서 current_user.is_privileged?

def is_privileged? 
Settings.privileged_users.include?(email) 
end 

경우 내가 확인하는 방법이

#config/settings.yml 
privileged_users: ENV["PRIVILEGED_USERS"] 

내 질문에 배열의 변수에 여러 값을 설정할 수 있습니까? 나는 Heroku에 내 애플 리케이션을 배포하고있다.

답변

0

원래 질문이었다 : 다음 검사가 단순히

class AddPrivilegedFlagToUsers < ActiveRecord::Migration 
    def up ; add_column :users, :privileged, :boolean, :default => false ; end 
    def down ; remove_column :users, :privileged 
end 

과 : 그럼 그냥 그 목록에있는 사람을 변경하는 코드를 다시 배포하지 않았을 배열. 대답은 아니오, 어쨌든 헤로쿠가 아닙니다. https://github.com/railsconfig/rails_config 섹션 heroku의 배열에 관한 내용 : "배열에서는 작동하지 않습니다.". 우리는 ended up을 여러 값을 문자열로 저장하고 분할하여 사용합니다. Thx Rene!

ENV['PRIVILEGED_USERS'] = "[email protected], [email protected]"

def is_privileged? 
Settings.privileged_users.split(',').include?(email) 
end 
2

배열을 문자열로 전달할 수 있으며 YAML이 올바르게 구문 분석해야합니다.

그래서 설정은 동일하게 유지됩니다 및 ENV 변수는 다음과 같습니다 일반적으로

PRIVILEGED_USERS="['[email protected]', '[email protected]']" 
2

이 파일은 정말 정말 정적 또는 구성 데이터에 사용되어야한다 설정을 선택합니다. 사용자 모델에 privileged 플래그를 갖고 싶지 않고이 정보를 데이터베이스에 저장하고 싶습니까? ENV 변수가 될 수 있다면

if current_user.privileged? 
    # do stuff 
end 
+0

당신은 바로 @armando 있습니다. 이것은 더 나은 장기 솔루션이며 우리는 아마도 나중에 그것을 통합 할 것입니다. – Thomas

관련 문제