이제 컨트롤러에 대한 참조가없는 비즈니스 비즈니스 개체가 있습니다. 그러나 나는 현재 사용자를 얻고 싶습니다. 이 방법을 사용하는 방법이 있습니까? ?
그런데 왜 현재 사용자를 그 방법으로 전달할 수 없습니까?
또한 당신은 그들을 혼합 할 수 있습니다.
을 난 강력하게 당신이 정적 헬퍼를 작성하는 억제 (그것이 루비, 자바하지 않습니다!).
... 등등
# user model
class User
include SuperLogic
#it will get the `calculate_stuff` method
end
# controller
include SuperLogic
# so you can use it as one of
calculate_stuff user
calculate_stuff
추가적으로 어디 액세스 권한을 : 당신이 그것을 필요로하는 곳에
module SuperLogic
def calculate_stuff(current_user=nil)
(current_user || user || self).bills.sum
end
edn
다음이 포함됩니다 : 당신은 그 도우미를 필요로 대신 는 모듈로 포함 비즈니스 논리를 사용하면 "정적"메서드 대신 클래스의 인스턴스를 만들 수 있습니다 (루비에서는 "클래스"메서드).
# controller
def calculate
@result = BusinessLogic.new(user).calculate_stuff
end
이것은 아마도 당신이 할 수있는 가장 쉬운 방법 일 것입니다.
정말, 비즈니스 개체의 전체 HTTP 컨텍스트에 액세스 할 필요가 없습니다. (테스트하는 것에 대해서도 말하지 않고 있습니다.)
모델로부터 액세스를 시도하고 있습니까? – fl00r
아니요, 정적 메서드 만있는 개체에서입니다. 이들은 컨트롤러에서 호출됩니다. – lzap
'Rack :: Test :: Methods'를 포함 시켰습니까? https://github.com/hassox/rails_warden/wiki/ 문제 해결 –