gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 06:16:10 25 4
gpt4 key购买 nike

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com