0

私の質問をさらに詳しく説明すると、作成アクションが呼び出されるたびに Track テーブルにトラックを追加するプレイリスト アプリがあります。ただし、localhost:3000 のインスタンスを開くたびに、テーブルに追加された同じ要素のセットが表示されます。

私が望むのは、ユーザーが自分の Web アプリを開いて独自のセッションを行うたびに、1 人のユーザーのプレイリストのテーブルの一部を断片化することです。

どうすればこれを行うことができますか?以下は、プログラムでデータベースに要素を追加する方法を示しています。さらに情報が必要な場合は、お知らせください。

def create

    if is_url(params[:track][:query])   
        @trackinfo = getTrackInfo(params[:track][:query])
    else
        @trackinfo = youTubeQuery(params[:track][:query])

    end
    @track = Track.new(@trackinfo)
    @tracks = Track.all
    @video_ids = Track.pluck(:video_id) 

    if @track.save

    else 
        render :action=>"index"
    end
end
4

2 に答える 2

1

あなたの質問を完全に理解しているかどうかはわかりませんが、試してみます。

ユーザーのサインイン/サインアウトを実装する必要があります。このようにして、各ユーザーは独自のトラック リストを持つことになります。devise gem を使用します。十分にテストされており、必要なものはすべて提供されます。

Rails セッションの詳細については、http: //guides.rubyonrails.org/security.htmlを参照してください。

この助けを願っています。

アップデート

Web サイトにアクセスする各ユーザーは固有のセッションを取得するため、user_id の代わりに session_id を使用できます。

超簡単な解決策:

ステップ 1: user_id という名前のトラック テーブルに列を追加します (インデックスも忘れずに追加してください)。session_id は文字列です。

ステップ 2: ユーザー変数を設定する application_controller に before_filter を作成します。

class ApplicationController
  before_filter:set_user

  # ...

  def set_user 
    @user_id = cookies['_session_id'] # @user_id is a string
  end

  # ....

end

ステップ 3: create メソッドで次のようにします

   # ...
   # Note this code is just to give you an idea 
   @new_track = Track.new(query: @trackinfo)
   @new_track.user_id = @user_id 
   @tracks = Track.where(user_id: @user_id)

   # ....

注: より柔軟なソリューションには、users テーブルが必要であり、セッションに格納された user_id に基づいて current_user 変数を設定する必要があります。上記のリンクを参照してください。

この助けを願っています。

于 2013-08-01T01:38:15.870 に答える
0

破棄する定義を作成します。ログアウトする前に LOGIN LOGOUT セッションを維持する場合は、AJAX を使用して Def Destroy を呼び出します。または、ログアウト セッションを維持しない場合は、イベント ハンドラ Jquery beforeunload または Java script onunload を利用できます。

  $(window).on('beforeunload', function(){ ajax call to destroy track.all);
        or         $(window).unload(function(){ ajax call });
于 2013-08-01T08:59:13.000 に答える