2013-08-01 42 views
0

我有一個自定義設計操作,它在幕後設置了一些屬性(lat,lng,citycountry)。現在我正在使用強參數,問題是無法識別create方法內的這些屬性。只要它們在表單頁面中就可以,但我想避免這種情況,因爲我沒有給這些信息來填充,而是自動檢測。devise + rails 4 +註冊控制器內的強大參數

def create 
     build_resource(sign_up_params) 

     resource.lat = current_latitude 
     resource.lng = current_longitude 
     resource.city = current_city 
     resource.country = current_country_code 

     if resource.save 
     cookies.delete(:valid_subscription) 
     if resource.active_for_authentication? 
      set_flash_message :notice, :signed_up if is_navigational_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_navigational_format? 
      expire_session_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 

並在ApplicationController我有這個

before_filter :configure_permitted_parameters, if: :devise_controller? 

    def configure_permitted_parameters 
    devise_parameter_sanitizer.for(:sign_up) do |u| 
     u.permit(:username, :email, :password, :password_confirmation, :birthdate, :sex, :interested_list, :lat, :lng) 
    end 
    devise_parameter_sanitizer.for(:account_update) do |u| 
     u.permit(:username, :email, :password, :password_confirmation, :lat, :lng) 
    end 
    end 

任何想法,我做錯了什麼,以及如何到白名單這些屬性通過?

我使用devise 3.0.0和Rails 4.0.0。

+0

devise_parameter_sanitizer.for(:create)? – AKovtunov

+0

不,實際上,即使我編輯該方法,也不會排除表單中的那些。 – Martin

回答

1

答案是我在我的路線上宣佈devise_scope :users do而不是devise_scope :user do

花了我幾乎整整一天的時間來搞清楚!

相關問題