【发布时间】:2014-05-16 02:30:42
【问题描述】:
我切换到 nosql 并正在与 Sinatra 一起玩 Mongoid。我还是新手,我被这个问题难住了。
class Item
field :name, type: String
field :category, type: Moped::BSON::ObjectId # holds _id of the category object
field :cover_type, type: String
validates_presence_of :category
validates_inclusion_of :cover_type, in:["Hardcover", "Softcover"]
end
class Category
field :name
validates_inclusion_of :name, in:["Books", "Movies", "Ebooks"]
end
想象一家商店出售书籍、电影和电子书,并且出售的每件商品都属于这三个类别之一。如果某个项目列在“书籍”类别下,则该项目需要有一个名为 cover_type 的字段。此外,cover_type 只能是“精装”或“平装”。
当保存一个项目时,我如何将项目类中的验证拼凑在一起,以便项目在图书类别中,因此需要存在字段cover_type,该字段也被验证为“精装”或“平装”?
如果项目不是一本书,那么cover_type 可以为空。
【问题讨论】: