好吧,我们都知道最后一个ActiveRecord::Store类的惊人新特性。
但是我们怎样才能安全地进行验证呢?这里有一个例子:
class User
has_many :posts
end
class Post
belongs_to :user
store :composed_attribute, accessors: [:attribute_1, :attribute_2]
validates :attribute_1, presence: true # This works great!
validates :attribute_2, presence: true, uniqueness: {scope: :user_id, message: "must be unique."} # This fails!
end
第一个验证效果很好,但第二个验证失败并且无法理解 undefined method 'text?' for nil:NilClass
。
在数据库中,所有内容都以 yaml 格式存储。但我们无法确定顺序,那么执行此类验证的最佳方式是什么?
免责声明
我知道,也许在这种情况下,将属性存储在一起并不是一个好主意,主要是为了解决性能问题,但无论如何这是一个有趣的话题。