有人可以给我一些设计方面的帮助吗?我的用户在我的网站上输入简短的通用更新,如果他们在特定时间限制内输入相同的更新超过两次,则更新将作为“快速链接”提供,以便将来他们可以快速输入相同的更新。
对此进行建模的最佳方法是什么? 2个表,一个用于更新,另一个用于维护已多次输入的更新,并按频率排序。如果我有这个系统,每当添加新的更新时,我将必须扫描2个表以查看它是否已经输入过;不理想。
答案 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))