2009-12-08 6 views
1

예를 들어 설정할 웹 관리자 용 설정이있는 경우 페이지 당 게시물 수, 일부 enum이 선택 사항을 표시합니다. 어떻게이 설정을 db로 유지해야합니까? 내가 그것을 직렬화하고 얼룩으로 저장해야합니까? 나는 레일을 사용하고 내가 동적 웹 인터페이스를 통해이 설정을 변경하려면, 그래서 environment.rb에이 상황에 맞지 않을 것이라고 생각웹 앱 구성을 유지하는 가장 좋은 방법은 무엇입니까?


감사합니다. 그래서 두 개의 튜플을 가진 테이블을 이름, 값으로 추가해야합니까?

+1

어떤 technoligies를 사용하고 계십니까? 일부 언어/프레임 워크는이 문제에 대한 솔루션을 구축했습니다. – NDM

+0

프레임 워크로 레일에 루비를 사용합니다. – sarunw

답변

0

asp.net을 사용하는 경우 Web.Config 파일을 사용할 수 있습니다.

당신은 키 - 값 쌍을 저장하는 데이터베이스의 단일 테이블을 만들 수 Asp .net Web.config Configuration File

0

를 참조하십시오.

1

대부분의 언어/프레임 워크에는 구성 파일이 있습니다. ASP의 web.config 또는 RoR의 environment.rb 파일). 이 중 하나를 사용할 수 있습니다.

데이터베이스에 키 값 쌍 테이블이 있거나 실패했습니다.

웹 사이트를 통해이 작업을 동적으로 수행하려면 키 값 쌍 테이블을 꼭 사용해야합니다.

1

동적 구성 값의 경우 키와 값이있는 구성이라는 모델을 만들어야합니다. 필자는 일반적으로 숫자, 문자열 및 날짜에 대해 여러 값 열을 가져온 다음 구성에 적절한 방법을 호출합니다.

"enums"의 경우 외래 키 관계가있는 조회 테이블을 첨부해야합니다. 예를 들어 게시물 모델이 있고 카테고리 열거 형을 원할 경우 Post belong_to :categoryCategory has_many :posts을 만들어야합니다.

1

YAML 파일을 사용하십시오. YAML은 XML보다 간단합니다.

"config"디렉토리에서 "config.yml"이라는 파일을 만듭니다. 그리고 YAML :: load()를 사용하여 파일을로드하십시오. 첫 번째 레벨을 환경 (예 : 생산, 개발, 테스트)으로 지정하여 각 환경에 대한 설정을 할 수 있습니다.

this episode of RailsCasts for details을 참조하십시오.

0

이것은 내가 사용하는 것입니다. 다른 곳에서 아이디어를 얻었지만 그 구현은 제 것이 었습니다.

class AppConfig 
    # Loads a YAML configuration file from RAILS_ROOT/config/. The default file 
    # it looks for is 'application.yml', although if this doesn't match your 
    # application, you can pass in an alternative value as an argument 
    # to AppConfig.load. 
    # After the file has been loaded, any inline ERB is evaluated and unserialized 
    # into a hash. For each key-value pair in the hash, class getter and setter methods 
    # are defined i.e., AppConfig.key => "value" 
    # This allows you to store your application configuration information e.g., API keys and 
    # authentication credentials in a convenient manner, external to your application source 
    # 
    # application.yml example 
    # 
    # :defaults: &defaults 
    # :app_name: Platform 
    # :app_domain: dev.example.com 
    # :admin_email: [email protected] 
    # :development: 
    # <<: *defaults 
    # :test: 
    # <<: *defaults 
    # :production: 
    # <<: *defaults 
    # :app_domain: example.com 
    # 
    # For example will result in AppConfig.app_domain => "dev.example.com" 
    # when Rails.env == "development" 
    # 

    class << self 
    def load(file='application.yml') 
     configuration_file = File.join Rails.root, 'config', file 
     File.open(configuration_file) do |configuration| 
     configuration = ERB.new(configuration.read).result 
     configuration = YAML.load(configuration)[Rails.env.to_sym] 
     configuration.each do |key, value| 
      cattr_accessor key 
      send "#{key}=", value 
     end 
     end if File.exists? configuration_file 
    end 
    end 
end 
AppConfig.load 

config/initializers/app_config.rb을 만들고 그것으로 위의 코드를 붙여 넣습니다 광산의 생산 프로젝트에서 가져온. 나는 이것을 보석으로 만들 예정이다. 다른 사람들이 유용하다고 생각합니다.

편집 : 웹 기반 인터페이스를 통해 앱을 실행하면서 구성을 편집하고 싶습니다. getter 및 setter 메서드가 각 특성에 대해 정의되므로이 메서드를 사용하여이 작업을 수행 할 수 있습니다. 컨트롤러에서

:

def update 
    params[:configuration].each { |k,v| AppConfig.send "#{k}=", v } 
    … 
end 

내가 모델을 찾을 수없는 여기에 적합한 솔루션이다. DB 설정에 대해 잊어 버리십시오. 앱 구성을 제어하는 ​​무언가를 인스턴스화 할 수 있다는 생각은 이치에 맞지 않습니다.당신이 그것을 구현하는 방법은 무엇입니까? 각 튜플에 대한 인스턴스! 싱글 톤 클래스 여야합니다.

관련 문제