我在Rails中制作了一个游戏,每天在不同的时间有多个游戏。在我的页面控制器,我显示的用户知道接下来的四个可用的游戏是:在视图中合并来自多个Rails表的数据
@quizzes = Quiz.where("game_start >= ?", Time.now).order(game_start: :asc).limit(4)
的Quiz
模型有一个game_start
列,因此这很容易。
我想为用户展示第二张表格,表明他们已经注册的。所以这将需要特定于current_user
,并且需要检查Reservation
表,用于表明用户是否已经注册了游戏。
这是棘手的地方。基于最好的做法是使用特定的,较小的型号,为Reservation
表如下:
class CreateReservations < ActiveRecord::Migration
def change
create_table :reservations do |t|
t.integer :user_id
t.string :category
t.timestamps
end
end
end
所以在我的控制,如果我使用:
@reservations = Reservation.where(user_id: current_user.id)
它将返回category
用户注册的游戏名称。这对用户来说并不是很有用。信息如game_start
(游戏开始时)位于Quiz
模型中,如上所述。
比方说,我在视图中将它作为表格格式化。一列使用@reservations
来查询哪些category
游戏已经注册(如“历史”和“体育”)。我是否也可以查询@quizzes
型号 - 在表格中 - 显示相应的game_start
次?
总之,我希望控制器1)向用户显示他们已经签署了(工作)游戏; 2)基于这些游戏category
,查询Quiz
表,也显示了game_start
倍。
这可能吗?
另外,以供参考:Quiz
表:
class CreateQuizzes < ActiveRecord::Migration
def change
create_table :quizzes do |t|
t.string :category
t.datetime :game_start
t.integer :entry
t.timestamps
end
这很简单,因为您将结果集合存储在不同的对象中。 –
很高兴听到。假设我在控制器中添加了@测验。我需要在视图中做些什么来确保'history'类别的'game_start'匹配''''''''Reservation''Reservation'表中的相应对象?我可以使用'。哪里连接类别? – darkginger