gpt4 book ai didi

ruby-on-rails - Rails 试图访问模型中的参数

转载 作者:太空宇宙 更新时间:2023-11-03 16:47:27 25 4
gpt4 key购买 nike

我已经通过 Devise gem 创建了一个 User 模型

我的关系设置为:

  • 用户与角色之间存在多对多关系
  • The User belongs_to (one to many relationship with) Batch
  • 用户与 UserProfile 具有_one(一对一关系)

现在,每次创建用户时,我都会调用创建 UserProfile 的方法 cup。问题是除了模型中设计自己的参数之外,我无法访问任何其他内容。

例如,我有一个用于选择角色的下拉菜单,但我无法访问其选择的值

我的目标是做这样的事情:

  def cup
if role.title == 'this'
create_user_profile(:username => 'username01')
else
create_user_profile(:username => 'username02')
end
end

这是模型的样子:

class User < ActiveRecord::Base

has_and_belongs_to_many :roles
belongs_to :batch
has_one :user_profile

after_create :cup

def cup
create_user_profile(:username => 'username')

end

# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end

我的参数是这样的:

{"utf8"=>"✓", "authenticity_token"=>"TbsLJxZB2aeDgj8RitTRKURCc3KODCKpv/xphwhAaIw=", "users"=>{"username"=>"rfdsfew", "role_id"=>"1", "batch_id"=>"1"}, "user"=>{"email"=>"2@223.com", "password"=>"[FILTERED]", "password_confirmation"=>"[FILTERED]"}, "commit"=>"Sign up"}

我可以访问user 哈希中的参数,但不能访问users 哈希中的参数

我的猜测是,这是因为设备 Controller 中不允许使用用户散列,因为我无法访问设备的 Controller ,所以我不知道如何允许用户散列。

我在网上找到了这个,但是没有用:

before_filter :configure_permitted_parameters, if: :devise_controller?

protected

def configure_permitted_parameters
devise_parameter_sanitizer.for(:sign_up) << :username
end

最佳答案

主要是额外的参数应该是 params[:user] 的一部分,因此将您的调用更改为 collection_select

接下来你需要确保设计允许那些额外的参数——这就是目的

 devise_parameter_sanitizer.for(:sign_up) << :username

您需要为每个额外参数执行此操作。但是对于数组参数,您需要使用更长的形式:

devise_parameter_sanitizer.for(:sign_up) {|u| u.permit(:email, :password, :username, :batch_id, :role_ids => [])}

这让我想到了您需要的最后一个更改:您与角色的关联是 has_and_belongs_to_many:您不能分配 role_id,您必须分配 role_ids,它必须是一个数组。

您需要将表单元素使用的名称更改为 role_ids 并且为了让 Rails 将其解析为数组,您需要将 [] 添加到它的末尾.如果您将 :multiple => true 传递给 select 助手,他们应该为您做这件事。

关于ruby-on-rails - Rails 试图访问模型中的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30542581/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com