當然,我的應用程序是使用Devise進行認證設計的。我擁有它,所以當第一個用戶註冊時,帳戶在帳戶表中創建並且account_id傳遞給用戶表。我還設置了它,以便每次創建一個新帳戶時,該用戶都被標記爲管理員。最後,我讓它在管理員可以創建新用戶的地方工作。在註冊期間將帳戶ID傳遞給新用戶
我的問題是,在創建新用戶時,我需要爲這些用戶分配與admin相同的account_id以將用戶綁定在一起。如果我在表單上添加account_id字段並讓管理員手動輸入,我可以這樣做。我想要的是這在後臺自動完成。
我嘗試了許多品種沒有成功。這就是我把下面的user.rb
before_save :add_account_id_from_parent
def add_account_id_from_parent
return true unless self.users.present?
self.users.update_attribute(:account_id, 1)
end
我用數字「1」只是爲了看看我是否能得到任何的自動化,並放置在該領域的不成功的嘗試之一。
就像我說的手動一切正常,但我希望它,所以acocunt_id是基於管理員account_id註冊時自動添加。
我不相信你錯過了什麼,我只是寫錯了。當我嘗試你的代碼 - 它說帳戶不能爲空,所以它不會保存用戶。另外,在你的上面的代碼中它增加了一個固定的數字。我需要做的不是添加1,而是查看創建帳戶的管理員的account_id,並將該用戶名輸入到新用戶account_id中。我是正確的,我將以上添加到user.rb – user1648020
問題是,你有一個驗證檢查「帳戶」存在,這是失敗的,所以它永遠不會到保存步驟。將'before_save'切換到'before_validation'並且應該可以工作。 –
回覆:您的第二個問題,我沒有足夠的信息來編寫該代碼。當前用戶的變量名稱是什麼?通常這將是'current_user'。假設是這樣,你可以用'current_user.account_id'代替'1',即:'self.account_id = current_user.account_id'。 –