我在Ruby on Rails上有一个音乐列表,但我不知道向每个用户显示该列表的内容,我想只显示每个用户的某些音乐,我使用设计来管理用户。
这是用户模型
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
end
我没有用户控制器
这是音乐控制器
class MusicaController < ApplicationController
def index
@musica = Musica.all
end
def show
@musica = Musica.find(params[:id])
end
end
谢谢
答案 0 :(得分: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
这样,您的查询就像:
class MusicasController < ApplicationController
def index
@musicas = current_user.musicas.all
end
def show
@musica = current_user.musicas.find(params[:id])
end
end
我猜你已经拥有了StoreController
用户可以购买的东西,因为实际上,MusicasController只允许用户看到他买的东西。希望它有意义吗?