Skip to content

Instantly share code, notes, and snippets.

@paneq
Created June 12, 2012 09:57
Show Gist options
  • Save paneq/2916664 to your computer and use it in GitHub Desktop.
Save paneq/2916664 to your computer and use it in GitHub Desktop.
json + associations based on game/prize/level/level_prize example
class Prize < Struct.new(:name, :img); end
class Level < Struct.new(:name, :order, :image); end
class Achievement < Struct.new(:prize, :level); end
class Rewarding
def add(achviement); end
def level_rewards(level_or_order); end
def level_for_prize(prize); end
def max_rewarding_level; end
end
class RewardingPresenter # Mapper ?
def initialize(rewarding)
end
def as_json(*)
hash = {prizes: prizes = [], levels: levels = [], rewards: rewards = []}
(0..rewarding.max_rewarding_level).each do |level|
rewarding.level_rewards(level).each do |achv|
prizes << achv.prize unless prizes.include?(achv.prize)
levels << achv.level unless levels.include?(achv.level)
rewards << [prizes.index_of(achv.prize), levels.index_of(level.prize)]
end
end
hash
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment