2012-07-18 2 views
0

일종의 catch22 상황입니다.attr_accessible <-> : as => : admin <-> db : seed <->

  1. 질량 할당 문제에서 사용자의 '역할'속성을 보호해야한다면 attr_accessible을 사용하고 제외해야합니다.
  2. 하지만 관리자가 설정하도록 허용해야한다면 assign_attributes를 사용하여 as => : admin을 추가해야합니다.
  3. 그러나 일부 기본 역할을 설정해야하는 경우 db : seed가 작동하지 않습니다.

세 가지 요구 사항을 모두 수행 할 수있는 방법이 있습니까?

감사합니다.

답변

0

질량 할당과 관련하여 몇 가지 방법이 있지만 실제로는 그다지 좋아하지 않습니다. 예를 들어

:

role = Role.new 
role.assign_attributes({...}, :without_protection => true) 
role.save 

내가 "sudo는"권한을 부여 내가 sudo_attributes라고 쓴 보석 사용하는 것을 선호 :

Role.sudo_create(...) 

이 API는 모델을 생성하고 인스턴스에 대한 액티브의 동일을 .

+0

sudo_attributes를 설치했는데 이제 내 모델에서 attr_accessible을 사용할 수 있으며 sudo_create를 사용했습니다! 메신저 내 컨트롤러 및 seeds.rb 그리고 모두 잘 작동합니다. 원래 질문에서 3 가지 요구 사항을 모두 충족 할 수 있습니다. 내가 자유 시간을 가질 때 나는 당신이 그것을 어떻게하고 있는지보기 위해 당신의 보석 내부를 들여다보고 싶습니다. 고맙습니다! – bytemonger

+0

다행, 내 대답을 upvote 자유롭게 :). 이 젬은 근본적으로 빌트인 Rails 메서드의 래퍼이며 실제 마법을 필요로하지 않습니다. 나는 너와 같은 상황에서 나 자신을 발견했다. 그래서 나는 그것을 썼다. https://github.com/beerlington/sudo_attributes/blob/master/lib/sudo_attributes.rb#L94 –

+0

매우 흥미 롭습니다. 오늘이 문제로 어려움을 겪고있는 내 컨트롤러 업데이트 방법은 attr_accessible 역할 기능을 사용하려고하는 추악한 시도입니다. 확실히 당신의 보석을 확인하고 핵심 팀이 우리에게 기대하는 바를 궁금해 할 것입니다. – MBHNYC

관련 문제

 관련 문제