Rails 4范围无法正确扩展

时间:2018-08-16 16:25:08

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-4

在最近从Rails 3移植到Rails 4的应用程序中,我有一个名为MeetingSeries的模型,具有以下关系:

SELECT s.student_name, MIN(m.value) AS minimum_marks 
FROM student s 
JOIN mark m ON s.student_id = m.student_id 
GROUP BY s1.student_id 
HAVING MIN(m.value) > 50 
ORDER BY s.student_name ASC

会议模型具有以下范围:

has_many :meetings, :foreign_key => :series_id

因此,如果我有特定的会议系列:

scope :future, -> { where("start_time is not NULL and end_time > ?", DateTime.now())}

我可以像这样抓取该系列的所有会议:

@m = MeetingSeries.find(42)

在这种情况下,我正确地得到了仅属于指定系列的少量会议。但是,当我使用范围时:

@m.meetings

我突然得到了所有将来的会议,而不仅仅是指定系列中的会议。为这两个构建的SQL查询是非常不同的,并且很明显的事实是,序列ID不是查询的一部分:

@m.meetings.future

对:

 irb(main):003:0> @m.meetings.count()
(1.5ms)  SELECT COUNT(*) FROM `meetings` WHERE `meetings`.`type` IN ('Meeting') AND `meetings`.`series_id` = 9856
=> 78

这在Rails 3下表现正常,所以我收集到错误的行为是由于Rails 4在作用域或ActiveRecordRelations工作方式上的某些差异引起的。

0 个答案:

没有答案