我有一个名为用户历史记录的表,一条消息将与用户ID一起保存到该表中。我也不希望从同一个用户再次保存相同的消息。 以下是我的控制器中保存消息的部分。
if delete == 1
if UserHistory.where(comments:message, user_id:id).present?
self.update_attributes(points: (self.points + point))
UserHistory.where(comments:message, user_id:id).first.destroy
end
elsif UserHistory.where(comments:message, user_id:id).present?
else
self.update_attributes(points: (self.points + point))
UserHistory.create(comments:message, user_id:id)
end
在此代码中,如果找到具有相同ID的消息,则我没有给出任何操作,否则创建一个新字段。
我的问题是我的本地机器一切正常。但是,当我在我的服务器中部署到开发时,它总是不起作用..有时同一用户的相同消息会再次保存。为什么会这样?任何解决方案?
答案 0 :(得分:2)
在UserHistory
型号
validates_uniqueness_of :comments, :scope => :user_id
更新:在else
块中只需反转这些行,以便在更新点之前触发验证
else
user_history = UserHistory.create(comments:message, user_id:id)
self.update_attributes(points: (self.points + point)) unless user_history.blank?
end