我正在构建一个管理用户和密钥的非常简单的应用程序。键是用户的嵌套属性。我受到RailsCast #196的启发。 这些模型被定义为:将嵌套参数传递给构建方法的正确方法是什么? (Ruby on Rails 5)
class User < ApplicationRecord
#Validations
---
#Relations
has_many :keys, :dependent => :destroy
accepts_nested_attributes_for :keys, :reject_if => :all_blank, :allow_destroy => true
end
class Key < ApplicationRecord
#Validations
---
#Relations
belongs_to :user
end
在使用者控制器包括强参数:
def user_params
params.require(:user).permit(:nom, :prenom, :section, :email, :password, keys_attributes: [:id, :secteur, :clef])
end
我想初始化每个新用户(使用者控制器)1个键:
# GET /users/new
def new
@user = User.new
key = @user.keys.build({secteur: "Tous", clef: "ABCDEFGHIJKLMNOPQRSTUVWXYZ12345678"})
end
我尝试了很多方法来初始化用户的密钥,但我无法弄清楚如何传递参数给它。用户总是被创建,但第一个键不是。没有错误信息发布。
你可以做key = @ user.keys.build,然后在嵌套的表单中添加一个隐藏字段,其中包含一个生成随机密钥的方法的值。 – luissimo