我是否需要检查 Rails 中的belongs_to 关联中是否存在记录?

时间:2021-07-15 13:55:36

标签: ruby-on-rails ruby

这可能是一个愚蠢的问题,但我想知道测试记录是否存在是否是一个好习惯,即使是“belongs_to”关联?

例如:

class MyModel < ApplicationRecord
   belongs_to :book

   def my_method
      if self.book.present? # <- Do I need this?
         # Do Something
      end
   end
end

大家怎么看?当belongs_to :book, optional: true 时呢?

1 个答案:

答案 0 :(得分:0)

这取决于,如果这本书是强制性的,那么显然您不需要检查关联是否存在。但如果不是,最好检查一下,否则当您尝试获取任何属性或对关联进行任何更改时,它可能会引发异常。强制我的意思是这个验证:

validates :book, presence: true

或者对数据库列有 NOT NULL 约束或者有:

belongs_to :book

没有optional: true

您也可以检查 self.book.present?book_id.present? 而不是 book.present?。这里有两件事:

  1. self 是多余的,不是必需的
  2. 如果您只想检查关联是否存在并且不想从数据库加载它,您可以检查 book_id.present