2011-01-20 7 views
0

after_createコールバック中にurl_helpersがユーザーモデルで動作していないようです。ここでエラーが...工夫/ registrationsController#でafter_create url_helpersがUserモデルで動作しない(Deviseで)

NameErrorが...

class User < ActiveRecord::Base 

    include ActionView::Helpers::UrlHelper 
    include Rails.application.routes.url_helpers 

    # Include default devise modules. Others available are: 
    # :token_authenticatable, :lockable and :timeoutable 
    devise :invitable, :database_authenticatable, :registerable, :confirmable, 
     :recoverable, :rememberable, :trackable, :validatable 
... 
# Callbacks 
after_create :initialization 

    def initialization 
if self.temp_org_id.blank? 
    self.update_attributes(:email_messages => true, :email_requests => true) 
    self.is_travel_planner ? buyer = true : buyer = false 


##### THIS IS WHERE IT BREAKS########################## 
step_1 = link_to('Setup your personal profile', edit_user_path(self)) 

    step_2 = link_to('Setup/update your company profile', '/organizations/new?user_id=' + self.id.to_s) 
    if buyer == true 
    step_3 = link_to "Find potential suppliers by name, location, person, and more!", "/organizations/new?user_id=" + self.id.to_s 
    else 
    step_3 = link_to "Make Connections with qualified buyers!", "/organizations/new?user_id=" + self.id.to_s 
    end 
    name = self.name_first 
    type = 'suppliers' 
    content = "<p>Welcome #{name},</p> 
<p>The iTourSmart community is built upon a powerful web-based tool that allows you to find and connect with #{type} like never before. Building your business with iTourSmart is as easy as 1-2-3!</p> 
<h4>Step 1: Setup your personal profile</h4> 
<h4>Step 2: #{step_2}</h4> 
<h4>Step 3: #{step_3}</h4> 
<p>=Of course, you can simply close this window and look around right now. This message is stored in your message center and can be accessed at any time.</p>" 

     new_note = self.notes.create(:is_fancybox_autoload => true, :is_sysmessage => true, :subject => "Setup your brand", :body => content) 
    else 
     self.roles.create(:user_id => self.id, :organization_id => self.temp_org_id) 
     self.update_attributes(:temp_org_id => nil, :email_messages => true, :email_requests => true) 
    end 
    end 
end 

ため

未定義のローカル変数やメソッド `コントローラ」を作成すべてのヘルプは大歓迎されます!

答えて

2

UrlヘルパーはARモデルでは機能しません。フルストップ、コールバックに気をつけません。これは、設計上、モデルレイヤーがWebサーバーのコンテキスト外で動作できる必要があります。

あなたは、モデルの中でウェブ・スタックのビットを含むことによって、問題をごまかすことができ、この質問のための関連リストで最初のものは..ですどのようにあなたを教えてくれますようにいくつかの質問があります。

は、 Can Rails Routing Helpers (i.e. mymodel_path(model)) be Used in Models?

+0

ありがとうございます。より多くの研究の後で、私は問題がDeviseの使用にも起因すると思います。私は私の質問に多くの情報を追加しました。 –

+0

私はあなたがこの背後を行くと思います。あなたのモデルのメモに大きな醜い文字列を作成するのではなく、ユーザーがメモを見るときに、テンプレート、URLヘルパー、豊富なモデルオブジェクトを自由に使用して作成します。 – noodl

+0

洞察に感謝します。それは多くの意味があります。最初のログインであるかどうかを追跡するためにユーザーレコードにフラグを設定する「最良の」方法ですか? –

関連する問題