我可以在没有用户控制器的情况下显示用户信息吗?

时间:2016-03-26 17:28:02

标签: ruby-on-rails ruby devise

我在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

谢谢

1 个答案:

答案 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只允许用户看到他买的东西。希望它有意义吗?