モデルで多くの同様のインスタンス メソッドを動的に生成する ActiveRecord マクロについてどこかで読んだような気がしますが、今は (オンライン ドキュメントや RoR ブックを調べても) 見つかりません。
私はプレーンな古い Ruby を使用して問題を解決しましたが、それを行うためのより良い (より Rails-y の) 方法があれば、それについて知りたいです。
Character
、Gear
およびモデルがありModifiers
ます (はい、これは RPG 用のアプリです)。キャラクターには、ステータスにモディファイアを追加するギアがあります。そのため、彼の装備 (および彼の装備の修飾子) を照会し、関連する統計の修飾子を合計する各統計のメソッドが必要です。(以下のコードのメソッドを参照してください)。
したがって、私の Character モデルは次のようになります。
class Character < ActiveRecord::Base
has_many :gears
has_many :modifiers, :as => :modifiable, :through => :gears
stats = ["hp", "bab", "ac"] # etc...
stats.each do |method_name|
define_method method_name do
self.modifiers.where(:kind => method_name).sum(:amount)
end
end
end
だから、このように私はできる
> jim = Character.create(:name => "Jim")
そして、ジムに彼の「hp」、「bab」、または「ac」を変更するギアを与えてください。
> jim.hp
また
> jim.ac
等...