2017-04-24 2 views
1

Rails 4にはenumが導入されており、ヘルパーメソッドが無料で提供されています。以前はユーザーロールに列挙型を使用していたので、user.manager?,user.employee?などのメソッドがありましたが、代わりにユーザー役割にSTIを使用することにしました。列挙型に似たSTIのヘルプメソッドを作成するにはどうすればよいですか?STIのヘルパー・メソッドはenumと似ていますか?

答えて

2

申し訳ありませんがenumは間違ったツールです。あなたは何も自動的には得られませんが、あなたの役割はほんのわずかかもしれないので、これらの数行はあなたのユーザーモデルとうまくいくはずです。

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

また、私はinitializeメソッドに属していると思いますか? '' self.class.name''や '' self.type''をチェックする方が良いでしょうか? – Strawberry

+0

いいえ、initializeメソッドを上書きしないでください。コールバックははるかにクリーンです。はい、タイプはオプションです。私はモンゴイ男です。SQL世界が何をしているのか分かりません。 –

関連する問題