我刚开始使用Ruby。我在Sinatra做了一个小应用程序,我正在使用带有sqlite3 db的Datamapper。
以下是我正在制作的三种型号。
class Team
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :created_at, DateTime
property :updated_at, DateTime
end
class Poll
include DataMapper::Resource
property :id, Serial
property :name, String, :required => true
property :created_at, DateTime
property :updated_at, DateTime
end
class Ranking
include DataMapper::Resource
property :year, Integer
property :week, Integer
property :ranking, Integer
property :votes, Integer
property :created_at, DateTime
property :updated_at, DateTime
belongs_to :team, :key => true
belongs_to :poll, :key => true
end
我希望能够查询某个民意调查,周和年的排名模型。
返回的结果应该是该轮询的所有排名,以及相关团队的每个排名数。
所以获得2011年 - 第1周或第1周 - 第7周等每个排名的排名和相应团队......
我一整天都在努力弄清楚如何让它发挥作用,而我无处可去,所以这就是我现在在这里寻求帮助的原因。
答案 0 :(得分:0)
首先让我说我从未听说过Datamapper的宝石。我可以更容易地继续思考Rails模型和迁移,所以我希望你不要介意我这样做。
我对数据模型有一些评论:
commercial
方法的内容来检索特定周内的民意调查。 (来源:http://apidock.com/ruby/Date/commercial/class)应用程序/模型/ team.rb
class Team < ActiveRecord::Base
has_many :rankings
has_many :polls, through: :rankings
validates :name, :presence => true
end
应用程序/模型/ poll.rb
class Poll < ActiveRecord::Base
has_many :rankings
has_many :teams, through: :rankings
validates :name, :presence => true
end
应用程序/模型/ ranking.rb
class Ranking < ActiveRecord::Base
belongs_to :team
belongs_to :poll
end
分贝/迁移/ create_teams.rb
class CreateTeams < ActiveRecord::Migration
def change
create_table :teams do |t|
t.string :name
t.timestamps
end
end
end
分贝/迁移/ create_polls.rb
class CreatePolls < ActiveRecord::Migration
def change
create_table :polls do |t|
t.string :name
t.date :published_at
t.timestamps
end
end
end
分贝/迁移/ create_rankings.rb
class CreateRankings < ActiveRecord::Migration
def change
create_table :rankings do |t|
t.integer :team_id
t.integer :poll_id
t.integer :votes
t.integer :ranking
t.timestamps
end
end
end
如果您没有时间设置测试应用程序来检查关系,请告诉我。