1
Rails 4引入了枚舉,並帶有免費的幫助器方法。以前,我使用枚舉來實現用戶角色,因此我使用了諸如user.manager?
,user.employee?
等的方法。但是,我決定使用STI來代替用戶角色。我怎樣才能爲類似於枚舉的STI創建幫助方法?有類似於枚舉的STI輔助方法嗎?
Rails 4引入了枚舉,並帶有免費的幫助器方法。以前,我使用枚舉來實現用戶角色,因此我使用了諸如user.manager?
,user.employee?
等的方法。但是,我決定使用STI來代替用戶角色。我怎樣才能爲類似於枚舉的STI創建幫助方法?有類似於枚舉的STI輔助方法嗎?
對不起,但枚舉是錯誤的工具在這裏。你不會自動獲得任何東西,但你的角色可能只是幾個,所以這幾行應該適合你的用戶模型。
class User %w(Mananger Employee Customer).each do |klass| define_method "#{klass.downcase}? do self.class.name == klass end end end
這會給你user.manager?
爲什麼枚舉是錯誤的工具,這裏的角色能否請你解釋一下? – Strawberry
另外,我猜是屬於初始化方法?檢查「self.class.name」或「self.type」是否更好? – Strawberry
不,不要覆蓋初始化方法,回調要乾淨得多。是的,類型是一個選項。我自己是個mongoid人,不知道sql世界在做什麼。 –