2016-08-29 61 views
0

我是Ruby on Rails的新手,嘗試做出正確的查詢。但在閱讀文檔和示例後,我無法從中獲得正確的查詢。所以我希望有人能指出我正確的方向。Ruby on Rails 4中的查詢根據當前用戶進行選擇

情況 我建立一個應用程序,其中教員可以建立培訓,並就幾個日期這些培訓(日期被稱爲刺激),其他用戶可以訂閱這些驚險刺激。它具有以下結構:models and needed table

我的模型代碼如下所示:

class User 
    has_many :trainings 
    has_many :thrills, through: :reservations 
    has_many :reservations 

class Training 
    belongs_to :user 
    has_many :reservations 
    has_many :thrills 
    has_many :users, through: :thrills 

class Thrill 
    belongs_to :training 
    has_many :reservations 
    has_many :users, through: :reservations 

class Reservation 
    belongs_to :user 
    belongs_to :thrill 
    has_one :training, through: :thrill 
  • 在一個索引頁,我想告訴所有的當前用戶設置了按日期排序驚險刺激。我想我需要上傳圖片中的表格,然後從該表中選擇所有刺激,其中current_user.id = user_id
  • 在搜索頁上,我只想顯示具有刺激的訓練不是完整(因此我想使預訂的計數)

我在想是這樣的:

@thrills = Thrill.joins(:trainings).where('? = trainings.user_id, current_user.id') 

@thrills = Thrill.where('? = @thrill.training.user_id', current_user.id).all 

@thrills = Thrill.joins(:trainings).where(trainings: { user_id: current_user.id }) 

但不幸的是他們都沒有工作。有人有一個想法如何解決這個問題嗎?提前致謝!

+0

能否請您發表您的型號代碼的問題嗎?然後,我可以幫助你完成第二步。 – siegy22

+0

剛剛添加,謝謝 –

+1

對於問題的第二部分,你必須提供更多細節,因爲沒有人能夠猜測你的邏輯可能是什麼時候,「快感」被認爲是保留的。 – neongrau

回答

1

通常你有以下兩種模式:

class Thrill < ActiveRecord::Base 
    belongs_to :user 
end 

class User < ActiveRecord::Base 
    has_many :thrills 
end 

因此,對於你的索引頁,你可以做的是:

current_user.thrills # => ActiveRecord::Relation (can call each, map etc.) 
+0

感謝您的回覆,複雜的是,這兩者之間有一個Trainingsmodel,我不知道該如何處理。你有什麼建議嗎? –

+0

要回答您的第一個問題,您必須添加訂單部分,使current_user.thrills.order(「created_at DESC」)具有最新版本。 – neongrau

+0

你是說用戶有很多刺激的訓練? – inveterateliterate