我在1:N
和user
模型中有books
个关系。当我通过门户网站创建books
的新条目时,一切正常,包括在foreign-key
表中保存user_id
books
。
但是,当我获取数据时,每个用户都会看到所有books
。如何根据登录用户过滤图书?
class BooksController < ApplicationController
before_action :authenticate_user!
def index
@book = Book.paginate(page: params[:page], per_page: 5)
respond_to do |format|
format.html
format.json { render json: @simulation }
end
end
def new
@book = Book.new
end
def create
@book = current_user.books.build(simulation_params)
if @book.save
redirect_to action: 'index'
else
render 'new'
end
end
def show
@book = Book.find(params[:id])
end
....
在哪里
class Book < ActiveRecord::Base
belongs_to :user
end
class User < ActiveRecord::Base
devise :database_authenticatable, :registerable, :validatable
has_many :books, :dependent => :destroy
end
我试过在Book controller.index
方法中进行一些修改,但它显示错误:
def index
@user = current_user.id
@book = @user.books
@book = Book.paginate(page: params[:page], per_page: 5)
respond_to do |format|
format.html
format.json { render json: @book }
end
end
答案 0 :(得分:2)
只需从
更改操作index
即可
def index
@book = Book.paginate(page: params[:page], per_page: 5)
respond_to do |format|
format.html
format.json { render json: @simulation }
end
end
到
def index
@book = current_user.books.paginate(page: params[:page], per_page: 5)
# only books that belong to a user, then paginate on those records
respond_to do |format|
format.html
format.json { render json: @simulation }
end
end
答案 1 :(得分:0)
Book.paginate
加载所有图书,使用@book.paginate