我有一个包含对不同模型的引用的模型, 例如:
class Book
belongs_to :cover
end
class Cover
has_one :book
end
我对每个模型都有验证。 封面模型中进行此类验证的示例:
def book_is_paperback
if self.book.is_papreback and !self.is_paperback
errors.add(:is_paperback, "cover doesn't fit the book")
end
end
如果我更改图书的字段,并尝试验证其封面,则会出现问题。
book.is_paperback = true
book.cover.valid?
在这种情况下,循环参考book.cover.book将显示书籍对象的旧值,而不是更新的值。
除了添加以下行:
book.cover.book.is_paperback = true
还有另一种方法可以解决这个问题吗?