Class User
  has_many :posts
end

Class Post
  belongs_to :users
end

我有一个帖子的内容,想知道用户是否曾经发送过内容相同的帖子。如果我只搜索一个用户,我很容易就能找到它。
user.posts.exists?(content: params[:content])

我想查看数据库中的所有用户。
users = Users.all
users.posts # will not work NoMethodError: undefined method `posts' for #<Array:0x007fbe818fbd98>

我需要一个true一旦有一个匹配或false如果没有用户与匹配的内容,为所有用户张贴的所有帖子。
我总是可以在一个块中循环这个,然后这样得到一个结果,有没有一种方法可以在一行代码中这样做?

最佳答案

试试这样的:

posts = Post.where(content: params[:content])
users = User.find posts.map(&:user_id)

或者更短的:
users = User.find Post.where(content: params[:content]).pluck(:id)

或者,如果您只需要检查给定内容的帖子(由任何用户创建)是否存在:
Post.exists?(content: params[:content])

关于ruby-on-rails - Ruby查找具有特定帖子内容的用户,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33805902/

10-13 09:00