【问题标题】:Maintaining duplicate updates design维护重复更新设计
【发布时间】:2012-02-26 10:32:16
【问题描述】:
谁能给我一些设计方面的帮助吗?我的用户在我的网站上输入简短的通用更新,如果他们在特定时间限制内输入相同的更新超过两次,则更新将作为“快速链接”提供,因此他们将来可以快速输入相同的更新。
请问这个建模的最佳方法是什么? 2 个表,一个用于更新,另一个用于维护多次输入的更新,并按频率排序。如果我有这个系统,每当添加新的更新时,我将不得不扫描 2 个表以查看之前是否已经输入过;不理想。
【问题讨论】:
标签:
mysql
ruby-on-rails
database
database-design
【解决方案1】:
假设您正在使用 Active Record,您可以使用 find_or_create_by 方法。
假设您有一个如下表:
消息
编号:整数
正文:字符串
user_id:整数
created_at: 日期时间
如果有此表,您可以执行以下操作:
# Assuming the users have_many :messages
update = user.messages.find_or_create_by_body("string")
这将找到带有正文“字符串”的消息或为您创建一个新消息。
如果您还需要更新频率,可以将其添加到消息表并调用:
update.update_attributes(:frequency => (update.frequency +1))