我正在创建一个Rails 4.10应用程序,我正在使用我的Rails 3.2应用程序中的代码。 在这个应用程序中,我得到一个表单,我添加一个名为group_ids的虚拟属性,然后使用after_save将组添加到用户。
在我的3.2代码中:
attr_accessor :group_ids
after_save :add_groups
def add_groups
if group_ids.present?
self.assignments.user_groups.delete_all
group_ids.reject!(&:empty?)
group_ids.each do |group|
assignment = Assignment.new
assignment.assignable_id = group
assignment.assignable_type = "UserGroup"
assignment.backend_user_id = self.id
self.assignments << assignment
end
end
end
在我的4.10代码中
Controller:
params.require(:backend_user).permit(:firstname, :lastname, :group_ids)
如何在4.10中使用Add_groups方法?
答案 0 :(得分:2)
查看您的代码,似乎group_ids
未在控制器代码中正确列入白名单,导致group_ids
未被设置,从而导致group_ids.present?
条件返回{{ 1}}在你的false
回调中。因此,没有一个语句在回调中执行。
为了缩短它,after_save
回调after_save
正在执行,但它没有做任何事情。
要解决此问题,您应该将add_groups
列入控制器代码中group_ids
的白名单:
Array