2016-03-26 10 views
-1

私はRuby on Railsの音楽リストを持っていますが、そのリストをすべてのユーザーに表示するものではありません。ユーザーごとに特定の音楽のみを表示したい、私はdeviseを使用してユーザーを管理します。レールにユーザコントローラなしでユーザ情報を表示できますか?

これは私がこれは音楽コントローラ

class MusicaController < ApplicationController 
    def index 
    @musica = Musica.all 
    end 

    def show 
    @musica = Musica.find(params[:id]) 
    end 
end 

あるユーザーコントローラ

を持っていないユーザモデル

class User < ActiveRecord::Base 
    devise :database_authenticatable, :registerable, 
     :recoverable, :rememberable, :trackable, :validatable 
end 

では、コメントをもとに、あなたに

+0

'musica'テーブルに' user_id'がありますか? – spickermann

+0

いいえ、必要はありませんか? –

+0

どの曲をどのユーザーに表示するかをどのように決定したいですか? – spickermann

答えて

0

ありがとうございましたおそらくUserをMusicaに接続する結合テーブルが必要になるでしょう。必要がない場合はUsersControllerは必ずしも必要ではありませんが、ユーザーが店舗から購入した曲のリストを表示したいと思うことは想像できます。 UserMusica(id:integer user_id:[integer|reference] musica_id:[integer|reference])

class User < ActiveRecord::Base 
    has_many :user_musicas 
    has_many :musicas, through: :user_musicas 
end 

class UserMusica < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :musica 
end 

class Musica < ActiveRecord::Base 
    has_many :user_musicas 
    has_many :users, through: :user_musicas 
end 

この方法で、あなたのクエリのようなものになります、私はそれがあるようので、あなたはすでに、ユーザーがものを購入することができるだろうStoreControllerを持って推測している

class MusicasController < ApplicationController 
    def index 
    @musicas = current_user.musicas.all 
    end 

    def show 
    @musica = current_user.musicas.find(params[:id]) 
    end 

end 

MusicasControllerは、ユーザーが購入したものだけを見ることができます。それは理にかなっていますか?