ruby-on-rails – Rails:如果Foo has_many:bars,那么吧:吧需
我正在开发一个包含大量照片的应用程序,这些照片由用户提供.照片共享方面是该应用的主要目的.
有时,创建照片的精选“收藏集”会很有帮助.因此,在ActiveRecord中这很容易:集合has_many:照片和照片belongs_to:集合. 我的问题是,对于不属于特殊收藏品的“普通”照片,我应该: A.根本没有它属于任何集合.即:photo.collection == nil -要么- B.创建一个包含每张照片的通用“社区集”.即默认情况下photo.collection ==’社区’ 我也在考虑这是否应该是HABTM关系. 反馈将非常感谢! 解决方法
这取决于你将如何处理未收集的照片,真的.如果您希望能够使用用于显示集合的相同操作显示未收集的照片,那么您将希望拥有该通用集合.否则,我会把它留下来;我不喜欢将“种子”数据与用户数据混合在同一个表格中(您将使用“未收集的”集合进行) – 在重新播种时,很容易意外删除用户数据.
它应该是HABTM关系吗?同样,取决于您想如何使用它.如果您很有可能希望照片属于多个集合,那就去吧. 我在这里提到的事情我不会这样做:添加一个’ptype’属性来告诉单身人士收集的照片(浪费数据库空间 – 你可以通过调用photo.collection_id.nil得到这些信息吗?);并且使用多态模型(你不希望单例照片的行为完全不同,我想,所以这增加了复杂性,几乎没有任何好处). 但是,命名范围是一个好主意,如果你没有“未收集”的集合来找到你的单身人士,它将特别有用: #Apologies for the Rails 2.3 code - it's what I know... named_scope :singletons,{:conditions => {:collection_id => nil}} 或者HABTM版本: named_scope :singletons,lambda { {:conditions => ['NOT EXISTS (SELECT * FROM collections_photos WHERE photo_id = ?)',self.id]} } 希望这可以帮助! (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |