【问题标题】:Tracking User's Liked Events in Database在数据库中跟踪用户的喜欢事件
【发布时间】:2014-02-02 04:18:57
【问题描述】:

我正在寻找一个按钮,用户可以在其中单击它并将事件添加到他们的事件列表中。他们添加到列表中的事件随后将填充到另一个视图中。

我想知道实现它的最佳方法是什么。

我考虑过在我的表中使用序列化文本列,并将事件的 id 推送到数组中。这样做是最好的方法吗?我是否还有对阵列进行操作的功能?

【问题讨论】:

  • 与其将 id 存储在序列化的文本列中,不如考虑一个基本的has_many :through 关联(比has_and_belongs_to 更灵活)。你可以adapt this answer to another question满足你自己的需要。

标签: ruby-on-rails ruby arrays activerecord


【解决方案1】:

您正在寻找的是关联,特别是 has_and_belongs_to_many 关联。

http://guides.rubyonrails.org/association_basics.html

我记得刚开始时的想法与您完全相同 - 使用模型中的列充当存储另一个模型的所有 ID 的存储桶。虽然这在技术上使用序列化是可行的,但它根本不理想,因为通过序列化列进行搜索效率极低。 PostgreSQL 有 hstore 数据类型,可以大大加快搜索速度,但仍然不理想。

Rails 中的关联直接在框架中工作,学习如何使用它们对于您作为 Rails 开发人员未来的成功至关重要。该指南将比我更好地解释它。如果您遇到困难,我会先在 Playground 应用程序中的用户和事件之间建立一个简单的 has_many 和 belongs_to 关系。然后在您的生产应用中实现 has_and_belongs_to_many。

【讨论】:

  • 我遇到过联想,但不确定从哪里开始,以及它是否最适合我想做的事情。非常感谢!
  • 没问题。如果您遇到麻烦,我很乐意制作一个小示例应用程序并将其上传到 github。一旦掌握了窍门,关联就很容易了!
  • 用户可以将自己的活动发布到网站上,也可以“喜欢”其他活动以添加到他们的日程安排/日历中。对于自己的事件,两者之间已经存在belongs_to 和has_many 关系。有没有办法在用户和喜欢的事件之间添加另一个关联,而无需专门为此创建另一个模型?我确定有,但我缺少一些东西。
  • 实际上,在查看了我最初帖子下的评论后,has_many :through 看起来就是我要找的东西!
猜你喜欢
  • 2010-12-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-04-23
  • 2013-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-05-30
相关资源
最近更新 更多