Ruby找到具有特定Post内容的User

时间:2015-11-19 13:55:41

标签: ruby-on-rails ruby activerecord

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所有用户发布的所有帖子。

我总是可以在一个块中循环这个并以这种方式获得结果,有没有办法在一行代码中执行此操作?

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

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])