Tag: 批量分配

无法使用Devise批量分配受保护的属性以创建has_many嵌套模型

我已经看过RailsCast,另一个嵌套属性video,很多SOpost,并与此争吵了一段时间,但我仍然无法弄明白。 我希望它有点小。 我有两个模型, User (由Devise创建)和Locker (又名产品愿望清单),我正在尝试为User注册时创建一个Locker 。 我的登录表单有一个新的Locker名称字段(恰当地称为:name ),我试图分配给在新用户注册时创建的锁定器。 我所遇到的只有: WARNING: Can’t mass-assign protected attributes: locker 我已经在我的两个模型中尝试了accepts_nested_attributes和attr_accesible每个组合,但仍然attr_accesible 。 我可以从日志中看到它正在由Devise #create方法处理,我知道Devise不够聪明,无法创建我想要的模型:) 这是我的两个模型的相关部分: # user.rb class User :lockers # Model nesting access accepts_nested_attributes_for :lockers end 和 # locker.rb class Locker :lockups attr_accessible :name, :description end # lockers_controller.rb (create) @locker = current_user.lockers.build(params[:locker]) @locker.save 我假设我需要覆盖Devise的create方法以某种方式让它工作,但我对rails非常新,并且我已经习惯了黑盒子“神奇”的本质。 如果有人能帮助我,我会非常感激。 已经花了太多时间在这上面,因为它是:) 编辑:我意识到我在我的问题中省略了一些东西。 我的Locker模型有三个属性 […]

Rails质量分配定义和attr_accessible使用

只是想明确什么是质量分配以及如何围绕它进行编码。 质量赋值是使用散列分配许多字段,即类似.. @user = User.new(params[:user]) 为了防止这种情况,你可以使用attr_accessible : attr_accessible :name, :email 因此,像管理员这样的字段无法通过批量分配添加? 但我们可以通过以下方式在代码中修改它: @user.admin = true 那么,如果我们没有attr_accessible那么一切都可以进行大规模分配吗? 最后一个棘手的问题……是否真的即使有一个attr_accessible如“attr_accessible:name”也意味着所有其他字段现在都无法进行质量分配?