5

Rails/AR とによってInflector追加されたメソッドでは、デフォルトで、StringActiveSupport

Nested::ClassDerived::FromAR.name.tableize == Nested::ClassDerived::FromAR.table_name

しかし、実際には をtableize呼び出しunderscore、ネストされたクラス セパレータunderscoreにアンダースコアを付けず::、代わりに a に置き換えて/パス名を作成します。おそらく、このメソッドを呼び出す必要がありpathifyますか?

とにかく、実際のアンダースコアが必要です。そこで、新しいStringインフレータ メソッドを定義することを考えています。

def new_inflector
  underscore.gsub('/', '_')
end

実際には、ネストされたクラス名の文字列に下線が引かれます。

underscoreそれで、私の質問は、構成なしで、適​​切かつ慣習的に新しいインフレクターメソッドに名前を付けるために、「 」の適切な変化は何ですか。それは ' underscoreize' (' ' によって確立された規則に従うtableize) または ' underscorize' でしょうか? それともunderscoreify

任意の洞察をいただければ幸いです。

4

2 に答える 2

8

アンダースコアをセパレータとしてパラメータ化しようとしましたか?

parameterize('_')
于 2011-07-30T16:48:37.110 に答える
1

これは、Ruby 2.5.0およびRails 5.1.6で機能しました。

"Admin::Role".parameterize.underscore
#=> "admin_role"
于 2018-07-31T22:11:13.773 に答える