두 모델 Users
과 Roles
이 있습니다. 두 모델 사이에 많은 관계가 설정되어 있고 roles_users
이라는 조인트 테이블이 있습니다.Ruby on Rails에서 조인 테이블 레코드를 업데이트합니다.
사용자가 확인란을 선택하고 컨트롤러에 게시 한 후 역할 목록이있는 페이지에 양식이있어서 roles_users
테이블이 업데이트됩니다. 그래서
role_ids = params[:role_ids]
user.roles.clear
role_ids.each do |role|
user.roles << Role.find(role)
end unless role_ids.nil?
나는로부터 전송 된 모든 역할 ID를 던졌다 반복 한 후 밖으로 모든 항목을 삭제하고 : 나는 더 좋은 방법이 확실하지이기 때문에 내 업데이트 방법에 순간
나는이 일을하고있다 양식을 통해 양식, 나는 또한 모든 확인란을 선택하고 양식을 게시하는 중복 기록을 유지하는 사람이 좀 더 효율적인 방법에 대한 조언을 줄 수있는 것으로 나타났습니다? 이user.roles = params[:role_ids].present? ? Role.find_all_by_id(params[:role_ids]) : [ ]
액티브 새로운 연결을 만들거나 더 이상 나와있는 사람들을 제거주의해야합니다 : 그것은 당신을 위해 더러운 일을 처리로
그것에 대한 건배는 완벽하게 작동합니다. 저는 많은 사람들에게 has_and_belongs를 사용하고 있지만 : about 접근법을 읽고 그것에 옮겼습니다. 다시 한번 감사드립니다. – RailsSon
user.roles = params [: roles_ids] .present가되어야합니까? ? Role.find_all_by_id (params [: roles_ids]) : [] – user938363
네 말이 맞아. 수정되었습니다. – tadman