假设我有一个模型Book
class Books < ActiveRecord::Base
belongs_to :library
has_many :pages
validates :library_id, presence: true
end
模型Library
class Library < ActiveRecord::Base
has_many :books
belongs_to :city
end
我如何修复一个nil异常我正在某处,NoMethodError未定义方法library
用于nil:NilClass当我执行book.library
之类的操作时?
或者换句话说,如何在将图书链接到图书馆之前确保library_id
不是nil
并且它存在于数据库中? validates :library_id, presence: true
不应该解决这个问题吗?
答案 0 :(得分:1)
您已验证了library_id。这对书本来说已经足够了。 您需要做的是确保无法删除具有书籍的图书馆。
以下是一个例子:
def destroy
@library = Library.find params[:id]
if @library.books.blank?
@library.destroy
redirect_to libraries_path
else
redirect_to library_path(@library)
end
end
答案 1 :(得分:1)
在致电UniqueCode: 1234
之前,请先检查book.library
或者将依赖的破坏添加到Book model book.library if book.library
答案 2 :(得分:1)
在致电nimcache
之前,您应该检查书籍:
book.library