Ruby on rails 作家有很多书,有很多顺序。如何确保Writer.books.each、orders.empty?
我有一个Ruby on rails 作家有很多书,有很多顺序。如何确保Writer.books.each、orders.empty?,ruby-on-rails,has-many,Ruby On Rails,Has Many,我有一个作家模型,里面有很多书籍。每本书都有许多订单。为了防止不必要的删除,Book模型有一个before_destroy hook方法,以确保它不会在order模型中引用,如中所建议的 Book.rb before_destroy: :ensure_not_referenced_by_any_order def ensure_not_referenced_by_any_order if orders.empty? return true else return fal
作家
模型,里面有很多书籍
。每本书
都有许多订单
。为了防止不必要的删除,Book
模型有一个before_destroy hook方法,以确保它不会在order
模型中引用,如中所建议的
Book.rb
before_destroy: :ensure_not_referenced_by_any_order
def ensure_not_referenced_by_any_order
if orders.empty?
return true
else
return false
end
end
before_destroy: :ensure_books_not_referenced_by_any_order
def ensure_books_not_referenced_by_any_order
self.books.each do |book|
if book.orders.empty?
return true
else
return false
end
end
end
我如何为Writer模型编写before\u destroy hook方法,以便Writer.books.each不存在订单?我开始编写下面的内容,但不知道如何确切地编写它
Writer.rb
before_destroy: :ensure_not_referenced_by_any_order
def ensure_not_referenced_by_any_order
if orders.empty?
return true
else
return false
end
end
before_destroy: :ensure_books_not_referenced_by_any_order
def ensure_books_not_referenced_by_any_order
self.books.each do |book|
if book.orders.empty?
return true
else
return false
end
end
end
非常感谢你的帮助 您不应该在没有订单的情况下中止第一本书的循环
def ensure_books_not_referenced_by_any_order
self.books.each do |book|
if !book.order.empty?
return false
end
end
return true
end
你不应该在没有订单的情况下中止第一本书的循环
def ensure_books_not_referenced_by_any_order
self.books.each do |book|
if !book.order.empty?
return false
end
end
return true
end
无法让@Mark的建议发挥作用。仅对书籍使用限制。empty?,这意味着作者必须先删除所有书籍才能删除自己的个人资料
def ensure_has_no_books
if books.empty?
return true
else
return false
end
end
请让我知道,如果你对我如何让has\u no\u books\u reference\u by\u any\u order循环正常工作有什么见解,我会接受的。谢谢 无法让@Mark的建议生效。仅对书籍使用限制。empty?,这意味着作者必须先删除所有书籍才能删除自己的个人资料
def ensure_has_no_books
if books.empty?
return true
else
return false
end
end
请让我知道,如果你对我如何让has\u no\u books\u reference\u by\u any\u order循环正常工作有什么见解,我会接受的。谢谢 谢谢@Mark。这仍然允许我销毁那些有订单的书籍的用户。我认为它很接近,所以让我来玩一下……嗨@Mark,我已经求助于一个不太理想的解决方案,如我的答案所示。请让我知道你是否知道为什么你的代码在这种情况下不起作用。我的方法中有一个输入错误,应该是
if!book.orders.empty?
(复数顺序),但您肯定已经解决了。谢谢@Mark。这仍然允许我销毁那些有订单的书籍的用户。我认为它很接近,所以让我来玩一下……嗨@Mark,我已经求助于一个不太理想的解决方案,如我的答案所示。请让我知道你是否知道为什么你的代码在这种情况下不起作用。我的方法中有一个输入错误,应该是if!book.orders.empty?
(复数顺序),但您肯定已经解决了这个问题。代码看起来仍然正确。顺便说一句:您可以将方法缩短为返回self.books.empty?
。别忘了纠正before\u destroy-hook:before\u destroy:确保\u没有书籍
。嗯,你的双冒号是故意在“销毁前”之后出现的吗?这不应该在那里…谢谢@Mark。修正了打字错误,但仍然无法让你的工作。。。我想我会选择一个更简单的解决方案,因为它实际上可以防止用户破坏他们自己的配置文件,除非他们真的确定(并通过删除他们自己的书籍来显示)。代码看起来仍然正确。顺便说一句:您可以将方法缩短为返回self.books.empty?
。别忘了纠正before\u destroy-hook:before\u destroy:确保\u没有书籍
。嗯,你的双冒号是故意在“销毁前”之后出现的吗?这不应该在那里…谢谢@Mark。修正了打字错误,但仍然无法让你的工作。。。我认为我将采用更简单的解决方案,因为它实际上可能有助于防止用户破坏他们自己的配置文件,除非他们真的确定(并通过删除他们自己的书籍来显示)。