无法获得包含和加入在Ruby on Rails中工作

时间:2012-08-16 11:54:07

标签: ruby-on-rails join

我正在构建一个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}

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

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

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

然后你可以做

current_user.checked_in_events