- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在开发一个包含大量照片的应用程序,这些照片由用户提供。照片共享方面是该应用程序的主要目的。
有时,创建精选的照片“收藏”会很有帮助。所以,这在 ActiveRecord 中很容易:Collection has_many :photos
和 Photo belongs_to :collection
.
我的问题是,对于不属于特殊收藏的“普通”照片,我是否应该:
A. 根本不属于任何收藏。 即:photo.collection == nil
-或者-
B. 创建一个包含每张照片的通用“社区收藏”。 即默认 photo.collection == 'Community'
我也在考虑这是否应该是 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}}
named_scope :singletons, lambda {
{:conditions => ['NOT EXISTS (SELECT * FROM collections_photos WHERE photo_id = ?)', self.id]}
}
关于ruby-on-rails - Rails : If Foo has_many :bars, 做所有 :bars need to belong_to a Foo?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5084648/
我是一名优秀的程序员,十分优秀!