フィットネスプログラムでのプレーヤーの進捗状況を追跡するアプリがあります。したがって、すべてのプレーヤーは同じ:week_idで複数の週を持ちます
週IDとbelongs_to関係を組み合わせると、週レコードの複合主キーになります。
ただし、異なるプレーヤーに属する同じweek_idで2週間を作成しようとすると、「列week_idは一意ではありません」というエラーが発生します。
週のレコードを取得する場合、それを取得するには2つの引数(week_idとplayer_id)が必要であることが示されるため、私は正しい方向に進んでいるように感じます。
私はおそらくここで簡単なものが欠けています。見せていただければ幸いです。
require "rubygems"
require "json"
require "sqlite3"
require "data_mapper"
require "bigdecimal"
DataMapper::setup(:default, "sqlite3://#{Dir.pwd}/prod.db")
DataMapper::Model.raise_on_save_failure = true
class Player
include DataMapper::Resource
property :name, String, :key => true
property :age, Integer
has n, :weeks
end
class Week
include DataMapper::Resource
property :week_id, Integer, :key => true
property :score, Integer
belongs_to :player, :key => true
end
DataMapper.finalize.auto_migrate!
@jack = Player.create(:name => "jack")
@jack.weeks.create(:week_id => 1)
@jill = Player.create(:name => "jill")
@jill.weeks.create(:week_id => 1)