2017-04-24 63 views
1

Rails 4引入了枚舉,並帶有免費的幫助器方法。以前,我使用枚舉來實現用戶角色,因此我使用了諸如user.manager?user.employee?等的方法。但是,我決定使用STI來代替用戶角色。我怎樣才能爲類似於枚舉的STI創建幫助方法?有類似於枚舉的STI輔助方法嗎?

回答

2

對不起,但枚舉是錯誤的工具在這裏。你不會自動獲得任何東西,但你的角色可能只是幾個,所以這幾行應該適合你的用戶模型。

class User %w(Mananger Employee Customer).each do |klass| define_method "#{klass.downcase}? do self.class.name == klass end end end

這會給你user.manager?

+0

爲什麼枚舉是錯誤的工具,這裏的角色能否請你解釋一下? – Strawberry

+0

另外,我猜是屬於初始化方法?檢查「self.class.name」或「self.type」是否更好? – Strawberry

+0

不,不要覆蓋初始化方法,回調要乾淨得多。是的,類型是一個選項。我自己是個mongoid人,不知道sql世界在做什麼。 –