【发布时间】:2015-05-05 08:39:14
【问题描述】:
我有一个包含这些列的用户模型 - 姓名、电子邮件、books_on_loan
我有一个预订系统,用户可以在其中签出/借入书籍。当用户签出一本书时,我想将他们的 'books_on_loan_ 整数加一,反之亦然。
到目前为止,我已经像这样尝试过,但收到一个错误“nil:NilClass 的未定义方法 `+'” - 它不喜欢 @user.books_on_loan
def check_out
@params = params[:book]
title = @params[:title]
name = @params[:name]
@book = Book.find_by_title(title)
@user = User.find_by_name(name)
if @user == nil
@note = 'This user is not registered.'
elsif @book == nil
@note = 'This book is not in the library.'
elsif @book.onloan == 1
@note = 'This book is on loan.'
elsif @user.books_on_loan == 3
@note = 'This user already has 3 books out.'
else
@book.onloan = 1
@book.save
@books_loaned = BooksOnloan.create(book_id: @book.id, user_id: @user.id)
@books_loaned.save
@user.books_on_loan = @user.books_on_loan + 1
@user.save
@note = 'The book was checked out.'
end
respond_to do |format|
format.html
end
end
【问题讨论】:
-
用户
@user.books_on_loan.to_i,以便在books_on_loan第一次为nil时将nil转换为0跨度> -
你应该计算那个值。如果性能有问题,请使用内置的
:counter_cache。
标签: ruby-on-rails ruby