2012-08-16 34 views
0

我正在构建一个Rails 3.2.6应用程序,并且在此应用程序中我获得了用户,事件和检查。 我也在使用Postgres。无法获得包含和连接在Ruby on Rails中工作

用户

has_many :events 

has_many :checkins 

活动

belongs_to :user 

has_many :checkins 

签到

belongs_to :user 

belongs_to :event 

当我呼吁所有CHEC (使用下面的代码)我也想要 获取签入事件的所有基本数据,但它不起作用。 我只收到签入的数据,没有任何事件。哪里不对?

current_user.checkins.includes(:event) 

我想这太:

current_user.checkins.joins(:event) 

UPDATE

我这样做是为了让所有的事件数据,而不是签数据。这是正确的 这样做吗?

checkins = current_user.checkins 

@array = Array.new 

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

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

回答

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 
+0

看起来不错!基本上,我需要实现的是获取所有事件数据,而不是每个“签入”的签入数据并将其返回。我怎样才能做到这一点? – 2012-08-16 12:02:00

+0

我更新了我的代码。这个代码是一个好习惯吗? – 2012-08-16 12:08:49

0

听起来像你想要的是一个有很多通过关系。此添加到用户模型(你已经宣布签入协会后)

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

然后,你可以做

current_user.checked_in_events 
+0

听起来很有趣。用户模型应该是这样吗? – 2012-08-16 12:13:03

+0

是的,在用户模型中。 – 2012-08-16 12:13:47

+0

但这不会是一件坏事。用户应该能够拥有自己创建的事件并能够签入其他人的事件? – 2012-08-16 12:30:51

相关问题