Rails - 如何使用加入正确的方式

时间:2014-01-31 23:45:31

标签: join ruby-on-rails-4

我目前有两种型号:

class Event < ActiveRecord::Base
   has_many :event_occurrences, dependent: :destroy
end

class EventOccurence < ActiveRecord::Base
  belongs_to :event
end

当主EventOccurrence重复出现时,Event模型仅用 。例如,假设我有以下事件:

  =>Event(:id => 1, :name => "Picnic", :start_time => "2014-01-02 13:45", :end_time => 2014-01-02 14:45")

  =>Event(:id => 2, :name => "Meeting", :start_time => 2014-01-03 13:00", :end_time => 2014-01-03 14:00")

  =>EventOccurrence(id: 44, :event_id => 1, :date => "2014-01-09 13:45")

因此,上面的EventOccurence对象是“野餐”的一次性出现,应该总共出现2次(1月2日,1月9日)。

然而,我无法同时渲染所有3个事件。我试过了:

@events = Event.all.count
=> 2 

@events = Event.all.includes(:event_occurrences).count
=> 2

@events = Event.all.joins(:event_occurrences).count
=> 1

我不确定我在这里做错了什么。 我的猜测是我的模型设置错误,无法处理重复发生的事件。如果是这种情况,我肯定会欣赏一些关于更好地将这些事件存储在连接表中的反馈。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

是的,我认为你错了。实际上你只有3个事件,比方说,每个事件都可能发生。因此,对于每个事件,您可以询问它的发生。喜欢

@event.event_occurrences.each do |occurrence|
    occurrence.date #for example
do

希望这有帮助。