在after_create回调期间,url_helpers似乎在我的User模型中不起作用。这是错误...
Devise / registrationsController中的NameError #create
未定义的局部变量或方法`controller'for ...
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
非常感谢任何帮助!
答案 0 :(得分:2)
Url助手无法在AR模型中完全停止,在回调中无所谓。这是设计 - 您的模型层应该能够在Web服务器的上下文之外运行。
您可以通过将Web堆栈的位包含到模型中来解决问题,并且有几个问题可以告诉您如何...此问题的相关列表中的第一个问题是:
Can Rails Routing Helpers (i.e. mymodel_path(model)) be Used in Models?