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