내 사용자가 로그인하고 특정 회사와 연결된 앱이 있습니다. 사용자가 회사의 데이터 만 볼 수 있도록 모든 모델에 기본 범위를 추가하고 싶습니다. 그래서 내 Location
모델에서 나는 시도 :default_scope 호출에서 세션 변수를 사용하려면 어떻게해야합니까?
default_scope where(:company_id => session[:company_id])
을 오히려 내 응용 프로그램을 통해이 넘쳐보다. 내 생각은 기본적으로 Location
쿼리가 항상 현재 사용자 company_id로 제한되도록 보안을 설정하는 것입니다. 다른 모든 모델은 어떻게 든 Location
에 다시 연결되므로이 작업을 수행해야하는 유일한 장소 여야합니다.
나는 약간의 파고가 있었다. 나는 이것을하는 것이 나쁜 생각이라고 생각했다. (실제로 어떻게할지는 모르겠지만).
실제로 이렇게 할 수 있습니까? 이 문제를 해결할 더 좋은 방법이 있습니까? 다음
class ApplicationController < ActionController::Base
helper_method :my_model
def my_model
Model.where(:company_id => session[:company_id])
end
...
end
그리고 당신의 구체적인 행동 내에서 사용 :
@models = my_model.where("created_at > ?", 2.weeks.ago)
helper_method
당신이 방법을 사용할 수 있는지 확인합니다
필자도 똑같은 시도를 해왔다. 또는 모든 쿼리에 세션 변수를 포함하거나 적용하는 것을 잊지 않았습니까? 모티츠 솔루션은 깨끗해 보입니다. 귀하가 생각한 해결책에 관심이 있으십니까? –