这可能是一个愚蠢的问题,但我想知道测试记录是否存在是否是一个好习惯,即使是“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 时呢?
答案 0 :(得分:0)
这取决于,如果这本书是强制性的,那么显然您不需要检查关联是否存在。但如果不是,最好检查一下,否则当您尝试获取任何属性或对关联进行任何更改时,它可能会引发异常。强制我的意思是这个验证:
validates :book, presence: true
或者对数据库列有 NOT NULL
约束或者有:
belongs_to :book
没有optional: true
您也可以检查 self.book.present?
或 book_id.present?
而不是 book.present?
。这里有两件事:
self
是多余的,不是必需的book_id.present