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
所有用户发布的所有帖子。
我总是可以在一个块中循环这个并以这种方式获得结果,有没有办法在一行代码中执行此操作?
答案 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])