내가 모델 call.rb에서 calls_controller.rb캉캉 및 액티브 협회
load_and_authorize_resource :store
load_and_authorize_resource :call, :through => :store
def index
@calls = Call.accessible_by(current_ability, :index)
end
에서 내 Ability.rb
can :index, :calls, :store => { area_id: user.area_id }
에 다음 줄을
belongs_to :store
그러나 때 보기에서 @calls에 액세스하려고하는데 다음 SQL 오류가 발생합니다.
Mysql::Error: Unknown column 'store.area_id' in 'where clause': SELECT `calls`.* FROM `calls` INNER JOIN `stores` ON `stores`.`id` = `calls`.`store_id` WHERE `store`.`area_id` = 4 LIMIT 20 OFFSET 0
SQL 쿼리에 "WHERE stores
"이 있어야하기 때문입니다. . area_id
= 4 "이 캉캉에 문제가 아니면 내가 뭔가 잘못 설정을해야합니까 내가 참고로 캉캉 2.0을 사용하고
흥미 롭습니다. 그건 오류가 아니지만 사용자가 영역 4에있는 호출뿐만 아니라 모든 호출을 볼 수 있습니다. 여기에 새 프로젝트를 구축 중이므로 Ability.rb 또는 afaik를 방해 할 수있는 모든 컨트롤러에는 거의 기능이 없습니다. – thenapking
구문이 작동하지 않을 것이라고 확신합니다. 비교 : can [: read, : index], : calls, : id => 55866, [: read, : index], Call, : id => 55866. 후자는 모든 호출을 볼 수있게합니다. one – thenapking
무엇이 잘못 되었는가 잘 모르겠지만 cancanancan을 시도해보십시오. 왜냐하면'cancan' 지원이 잠시 중단 되었기 때문입니다. 이것은 오래된 문제 일 수 있습니다! – Nimir