Хотя request
будет не доступным в модели (вы получите NameError
со следующим кодом), ваша текущая проблема заключается в том, что контроллер выдает NoMethodError
, потому что отсутствует self.
в определении метода. Сделайте это методом класса (добавив self.
):
class MyModel < ActiveRecord::Base
def self.is_iphone_request?
if request.user_agent =~ /iPhone/
return true
end
end
Затем в вашем контроллере вы можете использовать:
MyModel.is_iphone_request?
Но, как я уже сказал, вы получите NameError
, потому что request
недоступен в модели.
Ваш метод 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?