Railsアプリケーションにいくつかの定数を作成しようとしているドメインデータがあります。これは、DanChakのEnterpriseRails第7章で出会ったものです。私は次のことを行いました。
G = Rating.find_by_rating_code('G')
次に、Rating :: Gを使用すると、適切な評価レコードが返されます。これはうまくいきます。私の問題は、私が150の評価コードを持っているという事実が原因で発生します。そのため、評価コードごとに上記のコード行を入力する代わりに、モデルが多くの冗長なコードで乱雑にならないように、少しメタプログラミングを使用したいと考えていました。そこで、以下を試してみました。
RATINGSCODES = %w(G A AB TR P ...)
class << self
RATINGSCODES.each do |code|
code.constantize = Rating.find_by_rating_code(code)
end
end
残念ながら、初期化されていない定数エラーが発生し、どこが間違っているのかわかりません。私はこれに正しい方法でアプローチしていますか?私もconst_getを使ってみましたが、それもうまくいかなかったようです。
以下の提案で、私も使ってみました
code.const_set = Rating.find_by_rating_code(code)
これにより、次のエラーが発生しました。
undefined method `const_set=' for "G":String