2010-06-17 5 views
2

난 내가/개 사용자가 구독 A에 대한 다섯 개 가지 프로젝트를 가질 수 속성 가입에 대한 제한을 설정하여 응용 프로그램을 가지고 있지만 현재 가입 B레일 가입 제한

에 대한 열이에 연결할 때 내가 거기에 현재 사용에 검사를 실행 액션을 만들고 거기에 한계가있는 경우 새 프로젝트를 만들 링크를 표시하지 않습니다. 보기 (새 프로젝트)에서 다시 (헬퍼에서) 새 프로젝트를 만들 수 있는지 확인하고 그렇지 않은 경우 약간의 업그레이드 링크가있는 메시지를 표시합니다.

구독 속성 제한을 우회하는 사용자를 차단하는 안전한 방법입니까?

직접 PUT 요청은 어떻게됩니까?

답변

1

새 프로젝트를 만들 때 사용자의 구독으로 새 프로젝트를 시작할 수 있음을 확인할 수도 있습니다. 이렇게하면 new_project_path에 직접 게시하더라도 오류가 발생합니다.

class Project 

    belongs_to :user 

    validate_on_create :subscription_allows_new_project 

    def subscription_allows_new_project 
    unless self.user.subscription.max_projects > self.user.projects.count 
     errors.add_to_base("Project limit reached, please upgrade today!") 
    end 
    end 

end 
+0

매우 간단하고 분명하여 지금 작성했습니다. –

+0

이것은 실제로이 문제에 대한 꽤 우아한 해결책입니다. 당신 중 누구도 내가 겪고있는 문제와 비슷한 해결책을 가지고있을 것입니다 : http://stackoverflow.com/questions/4631218/how-do-i-access-a-user-with-a-specific-role-in -rails-3? – marcamillion

0

정말로 put 요청에 대해 신중할 경우 모든 페이지에서 호출하는 도우미 메서드를 만들면됩니다.

<% if has_user_hit_project_limits %> 
Upgrade Now! 
<% else %> 
Add project 
<% end %> 

def has_user_hit_project_limits 
    if #logic 
     true 
    else 
     false 
    end 
end