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/