小编Mik*_*keJ的帖子

在Rails单元测试中,如何让用户夹具加载其关联的配置文件?

在有关Fixtures的文档(http://api.rubyonrails.org/classes/Fixtures.html)中,他们提供了以下使用关联标签引用的示例:

### in pirates.yml
reginald:
  name: Reginald the Pirate
  monkey: george

### in monkeys.yml
george:
  name: George the Monkey
  pirate: reginald
Run Code Online (Sandbox Code Playgroud)

因此,在他们的领导下,我有一个用户模型has_one:profile,个人资料:belongs_to:user,并尝试根据他们的示例设置灯具:

### in users.yml
reginald:
  id: 1
  login: reginald

### in profiles.yml
reginalds_profile:
  id: 1
  name: Reginald the Pirate
  user: reginald
Run Code Online (Sandbox Code Playgroud)

(注意:由于我的关联是单向的,因此用户夹具没有"profile:reginalds_profile"关联 - 将其放入会导致错误,因为SQL表没有profile_id属性.)

问题是,在我的单元测试中,一切似乎都正确加载,但用户(:reginald).profile总是为零.我错过了什么?

unit-testing ruby-on-rails fixtures

9
推荐指数
1
解决办法
9735
查看次数

选择作为相关表的前N个结果的项目

假设我有一个问题被问到的游戏,人们发布得分的回复,并且前10个回复获胜.我有一个SQL数据库存储所有这些信息,所以我可能有表,如用户,问题和响应.Responses表有foreign_keys user_id和question_id,以及属性total_score.

显然,对于一个特定问题,我可以通过订单和限制检索前10个响应:

SELECT * FROM Responses WHERE question_id=? ORDER BY total_score DESC LIMIT 10;
Run Code Online (Sandbox Code Playgroud)

我正在寻找的是一种方法,我可以为特定用户确定他们作为获胜者的所有回复的列表(在他们的特定问题的前10名).以编程方式简单地逐步执行每个响应并查看它是否包含在其问题的前10个中,但我想优化它以便我不进行N + 1个查询,其中N是用户提交的响应数量.

sql subquery limit greatest-n-per-group

5
推荐指数
1
解决办法
1008
查看次数