2011-01-26 11 views
0

私は、機敏さ、強度などのいくつかのユーザ情報を持つUserモデルを持っています。ユーザーには余分な力や器用さなど、多くの在庫アイテムがあります。Railsモジュールのカスタムフィールドを作成する

これらの値を組み合わせてUserオブジェクトを取得するより良い方法はありますか?私は、current_user.dexterity = current_user.dexterity + current_user.inventory_item.dexterityのようなものですが、アクセスしやすいオブジェクトで、すべての属性を組み合わせた方がはるかに優れています。

また、ここで重要なのは、ここでも重要なことです:game_item(inventory_itemに対応するデータベース内のアイテムの静的表現)など、いくつかの情報を追加したいからです。

答えて

0

あなたはこのような何かを行うことができるかもしれない:

 
class User < ActiveRecord::Base 
    has_many :inventory_items 

    def dexterity 
    read_attribute(:dexterity)+inventory_items.includes(:game_items).inject(0){ |s,i| s += i.dexterity) 
    end 
end 

このコードは、ユーザーの器用さを読み取った後、すべてのインベントリ項目が含まれており、その適切なゲームアイテムとそれらを結合し、その後の合計を計算しますアイテムの器用さを合計して合計します。合計を計算するもう1つの方法は次のとおりです。

 
current_user.inventory_items.all.sum(&:dexterity) 
+0

greatx::)このケースでは、後者は最も簡単で最適な方法だと思います。 – Spyros

関連する問題