加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – Rails:如果Foo has_many:bars,那么吧:吧需

发布时间:2020-12-17 03:44:51 所属栏目:百科 来源:网络整理
导读:我正在开发一个包含大量照片的应用程序,这些照片由用户提供.照片共享方面是该应用的主要目的. 有时,创建照片的精
我正在开发一个包含大量照片的应用程序,这些照片由用户提供.照片共享方面是该应用的主要目的.

有时,创建照片的精选“收藏集”会很有帮助.因此,在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]}
}

希望这可以帮助!

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读