Ruby on rails Rails-限制post每个ip地址的操作

Ruby on rails Rails-限制post每个ip地址的操作,ruby-on-rails,session,Ruby On Rails,Session,嗨,我是rails的新手,目前正在开发一个可以选择喜欢帖子的应用程序,我试图将喜欢帖子的行为限制在每个帖子1个,但我不知道怎么做,这个应用程序不包括用户,所以任何人都可以喜欢帖子,所以我认为最好的方法是使用IP或会话,有人能给我一些指导吗 我喜欢的动作 def like @post = Post.find(params[:id]) @post.likes += 1 @post.save redirect_to root_path end 您可以将post.lik

嗨,我是rails的新手,目前正在开发一个可以选择喜欢帖子的应用程序,我试图将喜欢帖子的行为限制在每个帖子1个,但我不知道怎么做,这个应用程序不包括用户,所以任何人都可以喜欢帖子,所以我认为最好的方法是使用IP或会话,有人能给我一些指导吗

我喜欢的动作

  def like
   @post = Post.find(params[:id])
   @post.likes += 1
   @post.save
   redirect_to root_path
  end

您可以将
post.likes
属性设置为IP数组而不是整数,然后检查数组中是否存在请求者的IP,以确定他们是否已经“喜欢”了该帖子


为了获得更具可扩展性的解决方案,您需要一种机制来将“like”操作绑定到特定的
用户
。你可能想要一个
Like
模型,它
属于
User
Post
来完成这个任务。

你可以将
Post.likes属性设置为IP数组而不是整数,然后检查数组中是否存在请求者的IP,以确定他们是否已经“喜欢”邮报


为了获得更具可扩展性的解决方案,您需要一种机制来将“like”操作绑定到特定的
用户
。你可能想要一个像
这样的
模型,它属于
一个
用户
Post
来完成这一点。

所以没有用户我无法处理它?因为应用程序的主要目标是在没有用户的情况下工作……编辑:数组想法可能正是我需要的,谢谢!查看更新的答案,了解如何在没有
用户
模型的情况下实现这一点。嗨,Chris,如果我想将“likes”作为数组而不是int存储在数据库中,那么我必须使用PostrgreSQL?如果你想将其视为PostgreSQL数组,可以。但是,您可以使用任何您想要的DBMS,方法是将其存储为数据库中的
文本
字段,并使用
serialize:likes,Array
我使用了serialize方法,效果很好!非常感谢。因此,没有用户我无法处理它?因为该应用程序的主要目标是在没有用户的情况下工作…编辑:阵列想法可能正是我所需要的,谢谢!查看更新的答案,了解如何在没有
用户
模型的情况下实现这一点。嗨,Chris,如果我想将“likes”作为数组而不是int存储在数据库中,那么我必须使用PostrgreSQL?如果你想将其视为PostgreSQL数组,可以。但是,您可以使用任何您想要的DBMS,方法是将其存储为数据库中的
文本
字段,并使用
serialize:likes,Array
我使用了serialize方法,效果很好!非常感谢。