2010-03-19 4 views
2

그래서 나는보석을 내 레일 3 앱과 함께 작동 시키려고 노력 중이며 문제가 발생했습니다._mask and Rails

그의 screen cast에 사용 된 Ryan Bates (보석 작성자)가 작성한 코드를 복사하려고 시도했지만 roles_mask가 메소드가 아니라는 오류가 표시됩니다. _mask 메소드가 루비/레일즈에서 제거되었다는 것을 알았습니다. 대체 무엇인지 궁금합니다. 나는 레일 3 루비를 사용하고

named_scope :with_role, lambda { |role| {:conditions => "roles_mask & #{2**ROLES.index(role.to_s)} > 0 "} } 

    ROLES = %w[admin student principal admissions] 

    def roles=(roles) 
    self.roles_mask = (roles & ROLES).map { |r| 2**ROLES.index(r) }.sum 
    end 

    def roles 
    ROLES.reject { |r| ((roles_mask || 0) & 2**ROLES.index(r)).zero? } 
    end 

    def role? 
    roles.include? role.to_s 
    end 

    def role_symbols 
    roles.map(&:to_sym) 
    end 

1.9.2dev

감사합니다

답변

1

그것은 테이블은 사용자 같은 소리 : 여기

내 user.rb 모델에서 코드입니다 roles_mask 열이 누락되었습니다. 포함 시켰습니까? 그리고 데이터베이스를 이주 했습니까? 이전 에피소드 http://asciicasts.com/episodes/189-embedded-association에서

: 우리가 할 수 있습니다

우선 비트 마스크를 값을 저장 사용자의 테이블에 새 정수 열라고 roles_mask을 추가 할 수 있습니다.

script/generate migration add_roles_mask_to_users roles_mask:integer 

그런 다음, 와우 마이그레이션

rake db:migrate 
+0

를 실행 단지 asciicasts를 감추고 대신 에피소드를 본 것이다. 정말 고맙습니다. –