사용자라는 모델이 있는데, 그 중 일부는 작성자로 간주됩니다. 이것은 역할이라는 테이블을 통해 수행됩니다.이 테이블에는 다양한 역할이 나열됩니다. "작성자"는 하나입니다. 권한 링크라는 테이블의 다 대다 연관은 역할과 사용자를 연결합니다.레일스 ActiveRecord : 주어진 권한을 가진 모든 사용자를 선택하는 방법?
사용자에게 작성자 권한이 있는지 확인하려면 특정 사용자에게 연결된 사용 권한을 통해 실행되는 방법이 있으며 해당 사용자 중 누구도 작성자 권한으로 연결되는지 여부를 반환합니다.
이 시스템은 저를 잘 지원해 왔습니다. 그러나 사이트에서 Authors를 검색하고 주문하는 것은 어색합니다. 제가하고 싶은 것은 간단하고 우아하고, 이상적으로는 Users.authors.order ("date_joined") 같은 것을 말할 수있는 명명 된 범위와 같습니다.
지금 당장 나는 모든 사용자를 데이터베이스에서 끌어 와서 한 번에 하나씩 실행하고 작성자 권한을 검색하는 것 이외에 "작성자"사용자 그룹을 얻는 방법이 없습니다. 발견 된 경우 사용자 배열에 추가 할 수 있습니다.
보기에 저자 목록을 표시 할 때마다이 작업을 수행해야하므로이 작업은 다소 무리가 있습니다.
더 좋은 방법이 있습니까?
편집 - 솔루션 :
아래에 도움이되는 조언과 내가 함께 다음을 넣을 수 있었다 http://railscasts.com/episodes/215-advanced-queries-in-rails-3?view=asciicast에서 팁에 따라. User.rb에서
: Permission.rb에서
class User < ActiveRecord::Base
scope :authors, joins(:permissions) & Permission.author_permissions
scope :admins, joins(:permissions) & Permission.admin_permissions
:
class Permission < ActiveRecord::Base
scope :author_permissions, where("role_id = ?", Role.find_by_rolename("author"))
scope :admin_permissions, where("role_id = ?", Role.find_by_rolename("administrator"))
그리고 짜잔! 이제 Users.authors
라고 부르면 매력처럼 작동합니다.
이것은 내가 바라는 바로 그 것이다. 정말 고마워. (또한 http://railscasts.com/episodes/215-advanced-queries-in-rails-3?view=asciicast에서 유용한 구문 도움말을 얻었습니다.) – isthmus