2013-12-11 56 views
1

請讓我知道如果我以錯誤的方式進行討論。我試圖在創建方法中將幾個自定義屬性添加到用戶以及如果用戶被保存,則調用我的Analytics方法。用自定義創建覆蓋'Devise :: RegistrationsController'會給出NoMethodError

我定義了一個新的控制器:

class RegistrationsController < Devise::RegistrationsController 


    def create 
    build_resource(sign_up_params) 

    resource.public_id = Utilities::generate_code 
    resource.referral_code = Utilities::generate_code 
    if resource.save 

     Analytics.identify(
      user_id: resource.id.to_s, 
      traits: { email: resource.email }) 

     yield resource if block_given? 
     if resource.active_for_authentication? 
     set_flash_message :notice, :signed_up if is_flashing_format? 
     sign_up(resource_name, resource) 
     respond_with resource, :location => after_sign_up_path_for(resource) 
     else 
     set_flash_message :notice, :"signed_up_but_#{resource.inactive_message}" if  is_flashing_format? 
     expire_data_after_sign_in! 
     respond_with resource, :location => after_inactive_sign_up_path_for(resource) 
     end 
    else 
     clean_up_passwords resource 
     respond_with resource 
    end 
    end 
end 

只有在此創建方法不同的是,我加入referral_codepublic_id後的保存和運行分析之前。

 Analytics.identify(
     user_id: resource.id.to_s, 
     traits: { email: resource.email }) 

當我創建我得到

undefined method `is_flashing_format?' for #<RegistrationsController:0x007fdba130d9a8> 

我不明白爲什麼沒有被繼承了這一方法的用戶。這甚至是修改設計或添加屬性/添加分析的正確方法嗎?

+0

很確定首先你的類應該看起來像Modelname :: RegistrationsController

+0

嗯,進入實際的控制器和控制器方法工作正常。 – Ashbury

+0

繼github上的wiki後,我懷疑你是對的,所以我改變了它。但仍然收到未定義的方法錯誤。 – Ashbury

回答

3

我想通了,我使用Devise版本3.1.1(鎖定的依賴關係),它看起來像is_flashing_format?上個月在3.2.0增加了

我將我的控制器中的方法更改爲is_navigational_format?一切都很好!

相關問題