我在rails中有一个模型,它指的是属于用户的game_item.这种武器有一个is_equipped列,类似于该物品是否装备.game_item可以是武器,头盔等(由game_item模型中的item_type指定).
现在,我正在寻找一种方法来获得适合各种类型的装备.我可以做像get_equipped_item(类型)和指定类型,或get_equipped_helmet,get_equipped_weapon等等.我正在寻找更好的方法来做到这一点,rails方式:)任何想法?
您可以使用范围.
就像是
scope :equipped, where(:is_equipped => true)
scope :helmet, where(:item_type => 'helmet')
scope :weapon, where(:item_type => 'weapon')
Run Code Online (Sandbox Code Playgroud)
然后用它们作为
ModelName.equipped # => all equipped items
ModelName.helmet.equipped # => all equipped helmets
Run Code Online (Sandbox Code Playgroud)
延伸阅读:http://edgerails.info/articles/what-s-new-in-edge-rails/2010/02/23/the-skinny-on-scopes-formerly-named-scope/index.html,HTTP ://asciicasts.com/episodes/215-advanced-queries-in-rails-3