设计+轨道4 +注册控制器内部的强参数

时间:2013-08-01 13:59:34

标签: ruby-on-rails devise

我有一个自定义设计RegistrationController#create操作,可在幕后设置一些属性(latlngcitycountry)。现在我正在使用强参数,问题是无法识别create方法中的这些属性。只要它们在表单页面中就可以了,但是我想避免这种情况,因为我没有提供这些信息来填充,而是自动检测它。

    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。

1 个答案:

答案 0 :(得分:1)

答案是我在路线上宣布devise_scope :users do而不是devise_scope :user do

几乎整天都把我搞清楚了!