request
이 하지 모델에서 사용할 수 있지만 (다음 코드와 NameError
을 얻을 것이다)는, 현재의 문제는 방법 정의에 self.
을 없기 때문에 컨트롤러가 NoMethodError
을 던지고 있다는 점이다. request
가 사용할 수없는 NameError
때문에
MyModel.is_iphone_request?
을하지만 말했듯이, 당신은 얻을 것이다 : 그것 (self.
를 추가하여) 클래스 메소드 확인 :
class MyModel < ActiveRecord::Base
def self.is_iphone_request?
if request.user_agent =~ /iPhone/
return true
end
end
그런를, 컨트롤러, 당신은 사용할 수 있습니다 모델에서.
is_iphone_request?
은 ApplicationController
(보통 private
방법 일 수 있음)에 살고 있어야합니다. 당신은 또한 그것을 아래로 트림 할 수 있습니다
class ApplicationController < ActionController::Base
...
private
def is_iphone_request?
request.user_agent =~ /iPhone/ ? true : false
end
end
그런 다음 컨트롤러에서 사용할 수 있습니다
is_iphone_request?
당신이 설명 할 수 당신이와 ApplicationController에 넣고 왜? 나는 질문자와 똑같은 본능을 가졌다. 이 모델을 – ctilley79
에 넣는 것이 논리적 인 것처럼 보입니다. 왜냐하면'request'는 모델에서 접근 할 수 없기 때문입니다. 게다가 요청 변수를 처리하는 것은 일반적으로 모델이 아닌 컨트롤러가 수행해야하는 작업입니다. – Mischa
확인. 나는 그의 상황과 나의 상황의 차이를 보았다고 생각한다. 설명 주셔서 감사합니다. – ctilley79