Rails 3中的Rails 4中的虚拟属性

时间:2014-07-24 21:02:21

标签: ruby-on-rails-4

我正在创建一个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方法?

1 个答案:

答案 0 :(得分:2)

查看您的代码,似乎group_ids未在控制器代码中正确列入白名单,导致group_ids未被设置,从而导致group_ids.present?条件返回{{ 1}}在你的false回调中。因此,没有一个语句在回调中执行。

为了缩短它,after_save回调after_save正在执行,但它没有做任何事情。

要解决此问题,您应该将add_groups列入控制器代码中group_ids的白名单:

Array