2011-09-15 6 views
7

레일즈 3 앱에 사용자 정의 설정이 필요합니다. 이 https://github.com/ledermann/rails-settings 플러그인을 사용하고 싶습니다. 레일 콘솔에서 작업하고 있습니다. 그러나 나는 형식으로 일하는 데 어려움을 겪고있다. 나는 fields_for & attr_accessible을 사용합니까? 그렇다면 나는 운이 없다.레일즈 설정 플러그인을위한 폼을 만드는 방법

나는 두 모델에 대한 설정을 추가해야합니다. (위의 내용 콘솔에서 나를 위해 잘 작동)

user = User.find(123) 
user.settings.color = :red 
user.settings.color 
# => :red 

user.settings.all 
# => { "color" => :red } 

는, 예를 들어

, 사용자에 특정한 설정

하지만 표준 웹 양식을 통해 관리해야합니다. 나는 다른 사람들이 이것을 어떻게 다루고 있는지 알고 싶다.

감사합니다. 내가 무슨 짓을

답변

13

, 당신은 당신의 사용자 모델의 다른 속성처럼 "컬러"를 사용할 수와

class User < ActiveRecord::Base 

    has_settings 

    def self.settings_attr_accessor(*args) 
    args.each do |method_name| 
     eval " 
     def #{method_name} 
      self.settings.send(:#{method_name}) 
     end 
     def #{method_name}=(value) 
      self.settings.send(:#{method_name}=, value) 
     end 
     " 
    end 
    end 

    settings_attr_accessor :color, :currency, :time_zone 

end 

같은

나의 사용자 클래스에 동적 세터/게터를 추가합니다. 설정을 추가하는 것은 매우 간단합니다. 목록에 추가하기 만하면됩니다.

+0

우수 답변 -이 작업을 수행하는 방법이 조금 불확실하고 매력적으로 작동합니다. 레일 설정을 매우 깨끗하게 사용하도록 - 많은 감사합니다! 보석 제작자는 자신의 Github Wiki에 예를 들어 게시해야합니다. 필자의 유일한 변화는 함수 정의와 함수 호출을 private으로 만드는 것이 었습니다. – MikeH

+0

일반 변수와 같은 형식으로 사용할 때마다 다음과 같은 메시지가 나타납니다. '보호 속성을 대량 지정할 수 없습니다 : color, currency, time_zone'. 어떤 아이디어? – toobulkeh

+1

이것을 시도 할 때 "잘못된 숫자의 인수 (0에 1)"오류가 계속 발생합니다. – scientiffic

관련 문제