request
はは(次のコードでNameError
を取得します)のモデルでは利用できませんが、あなたの現在の問題は、メソッドの定義にself.
が欠落しているため、コントローラがNoMethodError
を投げているということです。私はrequest
が利用できないので、あなたがNameError
を取得します、言ったように
MyModel.is_iphone_request?
しかし:次に
class MyModel < ActiveRecord::Base
def self.is_iphone_request?
if request.user_agent =~ /iPhone/
return true
end
end
、あなたのコントローラでは、あなたが使用することができます。それ(self.
を追加することによって)クラスメソッドくださいモデルでは
お客様の方法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