2016-08-29 8 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

あなたは質問に、あなたのモデルのコードを投稿してくださいことはできますか?その後、私は2番目のステップであなたを助けることができました.. – siegy22

+0

ちょうど追加されました、ありがとう –

+1

あなたの質問の2番目の部分については、 "スリル"が予約されているとあなたのロジックが何であるかを誰も推測できないので、 – 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

返事をありがとう、合併症は、これらの2つの間にTrainingsmodelがあると私はそれに対処する方法がわかりません。あなたの提案はありますか? –

+0

あなたの最初の質問に答えるには、注文部品を追加する必要がありますので、 'current_user.thrills.order(" created_at DESC ")を最新のものにする必要があります。 – neongrau

+0

あなたは、ユーザーがトレーニングを通じて多くのスリルを持っている可能性がありますか? – inveterateliterate

関連する問題