2014-07-24 106 views
0

我正在創建一個Rails 4.10應用程序,我使用Rails 3.2應用程序中的代碼。 在這個應用程序中,我得到了一個表單,我添加了一個名爲group_ids的虛擬屬性,然後使用after_save將組添加到用戶。Rails 3中的虛擬屬性來自Rails 3

在我的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方法?

回答

2

看你的代碼,似乎group_ids未正確,導致group_ids未設置這反過來會導致group_ids.present?條件的after_save回調返回false控制器代碼列入白名單。所以,沒有任何語句在回調中被執行。

要縮短它,after_save回調add_groups正在執行,但它沒有做任何事情。

要解決這個問題,你應該白名單group_ids在控制器代碼的Array

params.require(:backend_user).permit(:firstname, :lastname, :group_ids => []) 
+0

當我做一個數組我得到這個錯誤:未知屬性:group_ids –

+0

我不得不添加attr_accessor:group_ids在模型中也是如此。我認爲這是在Rails 4中被摧毀的? –

+0

'attr_accessible'在Rails 4及更高版本中不再使用。但是'attr_accessor'仍然用於定義虛擬屬性。 –