2012-01-31 1 views
0

세 가지 모델이 있습니다 : 사용자, 구독 및 채널.특정 레코드를 수정 또는 삭제하지 못하도록 보호하는 가장 좋은 방법은 무엇입니까?

사용자 :

has_many :channels, :through => :subscriptions 

구독 :

belongs_to :user 
belongs_to :channel 

채널

belongs_to :user 
has_many :users, :through => :subscriptions 

나는이 자동으로 일부 구독 테이블에 채널의 생성 사용자를 추가하는 after_create 방법 기타 필요한 속성이 설정됩니다. 채널 사용자에게 해당하는 구독 기록을 삭제하거나 수정하지 못하도록하는 방법과 장소를 어디서 추가해야합니까?

내 모델은 다른 컨트롤러에서 몇 가지 다른 작업으로 업데이트 할 수 있으므로 모델 레이어에 내 모델이 필요하지만 콜백을 사용해야하는지 잘 모르겠습니다. 유효성 확인을해야하나요? 아니면 before_destroy, after_destroy 또는 무엇에 연결해야합니까? 당신이 특정 기준을 충족하지 않는 한 Subscription 기록의 삭제 또는 수정을 방지해야하는 경우

레일 3.1.3

답변

0

, 나는 Subscription 모델의 before_destroybefore_save 후크에서 그 보호를 넣어 것입니다. 수정 및 삭제 기준이 동일하면 둘 다 동일한 메소드를 가리킬 수 있습니다. 그렇지 않으면 before_destroy :validate_destroy_privilegesbefore_save validate_save_privileges을 지정할 수 있습니다. 또는 무엇을 검사하는지 의미 적으로 이해할 수 있습니다.

+0

사용자가 사용자 이름을 통해 중첩 된 양식에 추가되기 때문에 설정하기가 조금 더 어려웠습니다. 그러나 관리자 속성을 true로 설정하여 채널 작성자의 구독이 존재하도록합니다. 여기 내 모델입니다. https://gist.github.com/1745675 – Preacher

관련 문제