2014-04-10 1 views
1

나는 여러 부서로 구성된 스포츠 클럽 홈페이지를 운영하고 있습니다. 현재 승인 시스템은 cancan을 사용하여 실현됩니다.has_many association에 대해 여러 개의 값만 허용합니다.

각 부서는 여러 사용자를 가질 수 있으며 각 사용자가 여러 부서에 속할 수 있습니다 : 이것은 아주 잘 작동

has_and_belongs_to_many :users 

\ user.rb

has_and_belongs_to_many :departments 

#의 department.rb. 그러나 나는 User 양식에서이 연관을 관리 할 수있는 가능성을 원합니다. 거기에는 각 부서에 대한 체크 박스 그룹이 있습니다. 이것은 (simple_form을 사용하는)이 줄에 의해 실현됩니다.

<%= f.association :departments, 
      :as => :check_boxes, 
      :collection => Department.specific.order('name' => :asc), 
      :label_method => :name, 
      :value_method => :id %> 

이제 몇 가지 값만 변경할 수 있습니다. 클라이언트 측에서는 단순히 일부 확인란을 숨기거나 비활성화하여이를 수행 할 수 있습니다. 하지만 다시 확인하지 않으면 서버에 저장되지 않습니다. 확인란 값은 ID 배열로 전송됩니다. 이 배열에는 ID를 조작 할 수있는 큰 잠재력이 있습니다. 서버 쪽에서 현재 사용자에게 부서에 사용자를 할당 할 수있는 권한이 있는지 확인해야합니다. 그가 권리가 없다면 나는이 협회를 변경하지 않고 떠날 필요가있다.

우아한 방법이 있나요?

강력한 매개 변수가있는 Rails 4.0을 사용하고 있습니다.

감사

답변

0

그래서 귀하의 질문은 기본적으로 약 server-side validation입니다 - 사용자가 서버 측에서 연결을 편집 할 수 있는지 확인?

그렇게된다면 내가 모델에 통합 할 목적으로, 시작하는 동적 강력한 PARAMS 설정을보고 싶은데

:

#app/controllers/your_controller.rb 
def update 
    @item = Model.find(params[:id]) 
    @params = (can? :update, @item) ? "" : "departments: []" 
end 

private 

def controller_params 
    params.require(:controller).permit(:attributes, @params.to_sym) 
end