维护重复更新设计

时间:2012-02-26 10:32:17

标签: mysql ruby-on-rails database database-design

有人可以给我一些设计方面的帮助吗?我的用户在我的网站上输入简短的通用更新,如果他们在特定时间限制内输入相同的更新超过两次,则更新将作为“快速链接”提供,以便将来他们可以快速输入相同的更新。

对此进行建模的最佳方法是什么? 2个表,一个用于更新,另一个用于维护已多次输入的更新,并按频率排序。如果我有这个系统,每当添加新的更新时,我将必须扫描2个表以查看它是否已经输入过;不理想。

1 个答案:

答案 0 :(得分:1)

假设您正在使用Active Record,您可以使用find_or_create_by方法。 假设您有一张表格如下:

信息 id:int body:String user_id:int created_at:DateTime

如果此表格到位,您可以执行以下操作:

# Assuming the users have_many :messages
update = user.messages.find_or_create_by_body("string")

这将找到包含body“string”的消息,或者为您创建一个新消息。

如果您还需要更新频率,可以将其添加到消息表中并致电:

 update.update_attributes(:frequency => (update.frequency +1))