0

我正在构建一个 Rails 3.2.6 应用程序,在这个应用程序中我得到了用户、事件和签到。我也在使用 Postgres。

用户

has_many :events

has_many :checkins

活动

belongs_to :user

has_many :checkins

签到

belongs_to :user

belongs_to :event

当我调用用户进行的所有签入(使用下面的代码)时,我还想获取签入所附加的事件的所有基本数据,但它不起作用。我只得到签到的数据,没有得到关于事件的任何信息。怎么了?

current_user.checkins.includes(:event)

我也试过这个:

current_user.checkins.joins(:event)

更新

我这样做是为了获取所有事件数据而不是签入数据。这是正确的做法吗?

checkins = current_user.checkins

@array = Array.new

@array = checkins.collect {|checkin| checkin.event}

render :json => {:results => @array}
4

2 回答 2

1

你没有做错任何事情current_user.checkins.includes(:event),但你可能期待与 Rails 应该做的不同的事情。为了访问每个事件,您需要通过签入来完成。这是您可能会做的事情的一个例子:

checkins = current_user.checkins.includes(:event)
checkins.each do |checkin|
  puts "I'm at the event: #{checkin.event}"
end
于 2012-08-16T11:57:51.983 回答
0

听起来你想要的是一个有很多通过关系。将此添加到用户模型(在您声明签入关联之后)

has_many :checked_in_events, :through => :checkins, :source => :event

然后你可以做

current_user.checked_in_events
于 2012-08-16T12:10:18.520 回答