[解決済み] Rubyのクラス名をアンダースコアで区切られたシンボルに変換するには?
2023-01-05 01:27:04
質問
クラス名をプログラムで変更するにはどうしたらよいでしょうか。
FooBar
というクラス名をシンボルに変換するにはどうしたらよいでしょうか。
:foo_bar
例えばこんな感じですが、キャメルケースを適切に処理できますか?
FooBar.to_s.downcase.to_sym
どのように解決するのですか?
Railsには
underscore
というメソッドがあり、これを使うとCamelCasedの文字列をunderscore_separatedの文字列に変換することができます。なので、こんなことができるかもしれません。
FooBar.name.underscore.to_sym
しかし、ipsum が言うように、それを行うためだけに ActiveSupport をインストールする必要があります。
もし、そのためだけに ActiveSupport をインストールしたくないのであれば、猿真似で
underscore
を
String
を自分自身で作成します(アンダースコア関数は
ActiveSupport::Inflector
):
class String
def underscore
word = self.dup
word.gsub!(/::/, '/')
word.gsub!(/([A-Z]+)([A-Z][a-z])/,'\1_\2')
word.gsub!(/([a-z\d])([A-Z])/,'\1_\2')
word.tr!("-", "_")
word.downcase!
word
end
end
関連
-
[解決済み] Rubyのswitch文の書き方
-
[解決済み] Rubyで配列に値が存在するかどうかを確認する方法
-
[解決済み] Rubyからシェルコマンドを呼び出す方法
-
[解決済み] Rubyでnilとemptyとblankを理解する方法
-
[解決済み] Rubyで文字列を小文字・大文字に変換する方法
-
[解決済み] Ruby on Railsで現在の絶対URLを取得するにはどうすればよいですか?
-
[解決済み] Rubyのclass << selfイディオム
-
[解決済み] Rubyのクラス名を取得する方法を教えてください。
-
[解決済み】rakeタスクにコマンドライン引数を渡す方法
-
[解決済み】rubyでキャメルケースからアンダースコアケースに変換する方法
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ActionController::InvalidAuthenticityTokenについて
-
[解決済み] Rubyの文字列から日付への変換
-
[解決済み] Ruby on Railsのランナー
-
[解決済み] ウェブパッカーがアプリケーションを見つけ出せない
-
[解決済み] railsアプリケーションでCookieのオーバーフロー?
-
[解決済み] gemのアップデート後、"Asset was not declared to be precompiled in production "でテストが失敗する。
-
[解決済み] Railsはsaveでモデル内の検証をスキップしますか?
-
[解決済み] Rspec が私のモデルクラスを認識しない。初期化されていない定数エラー
-
[解決済み] Heroku: 既存のrailsアプリにseeds.rbをプッシュする方法?
-
[解決済み] RSpecとCucumberの違いは何ですか?[クローズド]