代码之家  ›  专栏  ›  技术社区  ›  Marcos R. Guevara

设计、创建属于公司的用户

  •  0
  • Marcos R. Guevara  · 技术社区  · 7 年前

    我想创建一个与设计有关联的用户。

    少了什么?从选择列表中创建属于公司的用户需要什么?

    我的表格上有:

    .siimple-form-field
            = f.label :name, class: "siimple-label"
            br
            = f.text_field :name, autofocus: true, autocomplete: "email", class: "siimple-input siimple-input--fluid siimple--height-50"
          .siimple-form-field
            label.siimple-label
              | Select an option:
            = f.fields_for :company_attributes do |b|
              = b.select :company, Company.all.collect{|p| [p.name, p]}, {}, class: "siimple-select siimple-select--fluid"
    

    表格显示可以,所以当我试图提交时,它会说:

    1 error prohibited this user from being saved:
    
        Company must exist
    

    也是我的 注册管理员 拥有:

    def create
      super
    end
    
    
    def configure_sign_up_params
      devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :bank])
    end
    
    3 回复  |  直到 7 年前
        1
  •  1
  •   ldeld    7 年前

    我认为你的问题是公司参数不被允许(这意味着公司被设置为 nil ,因此 Company must exist 错误)。

    你必须超越被设计的 resource_params 方法添加 company_id 属性。尝试将此放入注册控制器:

     def resource_params
        params.require(:user).permit(:user_attribute_foo, :user_attribute_bar, :company_id)
     end
    
        2
  •  1
  •   Marcos R. Guevara    7 年前

    解决了的!

    首先,注册管理员没有 被覆写 路线 文件,刚刚得到:

    devise_for :users, controllers: {
        sessions: 'users/sessions',
        # something missing no?
    
      }
    

    devise_for :users, controllers: {
        sessions: 'users/sessions',
        registrations: 'users/registrations'
    
      }
    

    然后,做一些常见的事情,比如在 控制器 以下内容:

    def create
      params[:user][:company] = Company.find(params[:user][:company_id])
      super
    end
    

    并将缺少的权限添加到 configure_sign_up_params

    def configure_sign_up_params
      devise_parameter_sanitizer.permit(:sign_up, keys: [:name, :company_id, :company])
    end
    
        3
  •  0
  •   Rashid D R    7 年前

    我想您的列名是company_id,您正在表单中使用company。尝试更改它并允许此参数。