1
我有下面的類ASSOCATION!方法總是返回正確的領導者,但未能更新對象的foreign_key'leader_id'。Rails的不節能
正如你可以從我的實際代碼評論看到的,我不知道爲什麼。當我去控制檯並明確設置一個組的領導者時,一切似乎都很好。
有沒有人明白爲什麼會這樣?
(順便說一下,該方法的目的是更新的一組領導者當先前前導已變爲不活動,新的領導者是一個與最登錄。)
我有下面的類ASSOCATION!方法總是返回正確的領導者,但未能更新對象的foreign_key'leader_id'。Rails的不節能
正如你可以從我的實際代碼評論看到的,我不知道爲什麼。當我去控制檯並明確設置一個組的領導者時,一切似乎都很好。
有沒有人明白爲什麼會這樣?
(順便說一下,該方法的目的是更新的一組領導者當先前前導已變爲不活動,新的領導者是一個與最登錄。)
嘗試在前面添加自leader
:
self.leader = users.active.sort_by{|u| u.completed_sessions}.last
save!
這是紅寶石分配必要的,因爲紅寶石並不知道是否leader
是可變本地該方法,或該對象self
上的分配方法。
而且,如果completed_sessions
是數據庫列,我會考慮使用此代碼來拉正確的用戶:
self.leader = users.active.order("completed_sessions DESC").first
這將使用你的數據庫的查詢,而不是拉動所有記錄,並整理數據庫Ruby然後對它們進行排序 - 當用戶數據庫變大時更高效。
謝謝。我以前只是隨處使用自己,但後來我看到很多奇特的人離開了它。感謝您的澄清。 這是一個很好的主題:http://stackoverflow.com/questions/4699687/when-to-use-self-foo-instead-of-foo-in-ruby-methods – Andy
是的,不幸的是,complete_sessions是不幸的不是數據庫列,而是一種方法......但很好的提醒。 – Andy