ruby-on-rails - Redis、Mongoid、Rails - 在 View 中使用 redis 属性

标签 ruby-on-rails mongodb mongoid redis

def add_like user_id
  $redis.sadd "likes:#{_id}", user_id
end

def remove_like user_id
  $redis.srem "likes:#{_id}", user_id
end

def likes
  return $redis.scard("likes:#{_id}")
end

添加喜欢的非常简单的代码。问题是,我想在 Controller 中轻松检索它们。例如当我执行 @event = Event.find(params[:id] 时,我希望能够以 @event.likes 的形式访问 View 中的点赞。

建议?

更重要的是,我想检查当前用户是否喜欢这个。我把这段代码放在哪里?在 Controller 中?使用 liked_this? this smells 遍历所有事件。

最佳答案

编辑:这是我凭内存输入代码时发生的情况。对于 ActiveRecord,self.id 返回当前记录的主键,除非您有意将其设置为其他值,否则它是一个整数。对于 Mongoid,self.id 返回一个 BSON::ObjectId。 Redis 需要一个字符串键,因此您必须像这样在 BSON 对象上调用 to_s:self.id.to_s

在您的 View 中添加 @event.likes 的功能是微不足道的。像这样将 likes 方法添加到您的模型中:

def Event
  def likes
    $redis.scard("likes:#{self.id.to_s}") # return is not necessary
  end
end

如果您想使用 mongoid 检查当前用户是否喜欢某个事件而不遍历每个事件,您需要将喜欢存储在 mongodb 而不是 redis 中。

关于ruby-on-rails - Redis、Mongoid、Rails - 在 View 中使用 redis 属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8017560/

相关文章:

mysql - Rails 在 TEXT 列上使用 3 个破折号为插入和更新添加前缀

MongoDB - 使用许多嵌套对象更新嵌套数组

Python mongoengine - 保存后检索_id

ruby - 在 mongoid 上提取多个和/或嵌套字段

ruby-on-rails - 将 jquery datepicker 与 Rails MongoId Date 字段一起使用会导致 "argument out of range"错误

ruby-on-rails - Bootstrap动态主动导航

ruby-on-rails - Ruby on Rails/事件记录 : Custom Sorting Order

ruby-on-rails - 在Rails中使用局部的最佳实践

java - 在 mongodb 中将两个键合并为一个键

ruby-on-rails - Mongoid Twitter 风格的关注,无法为关系数组指定标准/条件