Ruby on rails “获取所有姐妹”有许多记录,但当前记录除外

Ruby on rails “获取所有姐妹”有许多记录,但当前记录除外,ruby-on-rails,activerecord,associations,Ruby On Rails,Activerecord,Associations,如果一个用户有许多:Post,而一篇Post属于:User,并且我有一篇特定的Post保存在一个名为@Post的变量中,那么除了@Post本身之外,我可以用什么最简洁的方式获得与@Post属于同一用户的所有Post 我能提供的最好的服务是: @post.user.posts.where('id NOT IN (?)', @post.id) 但这似乎非常冗长。(重复“post”三次似乎是多余的。) 有更好或更简洁的方法吗?您可以创建一个运行此查询的方法 Post.where(user_id: @

如果一个用户
有许多:Post
,而一篇Post
属于:User
,并且我有一篇特定的Post保存在一个名为
@Post
的变量中,那么除了
@Post
本身之外,我可以用什么最简洁的方式获得与
@Post
属于同一用户的所有Post

我能提供的最好的服务是:

@post.user.posts.where('id NOT IN (?)', @post.id)
但这似乎非常冗长。(重复“post”三次似乎是多余的。)


有更好或更简洁的方法吗?

您可以创建一个运行此查询的方法

Post.where(user_id: @post.user_id).where.not(id: @post.id)

您可以创建一个运行此查询的方法

Post.where(user_id: @post.user_id).where.not(id: @post.id)

您可以创建一个运行此查询的方法

Post.where(user_id: @post.user_id).where.not(id: @post.id)

您可以创建一个运行此查询的方法

Post.where(user_id: @post.user_id).where.not(id: @post.id)

由于活动查询结果可以作为可枚举项返回,因此可以改用可枚举方法“-”:

class Post < ActiveRecord::Base
[...]
  def other_posts
    user.posts - [self]
  end
[...]
end
class Post

然后你可以打电话给
@post。其他帖子

由于活动查询结果可以作为可枚举项返回,因此可以使用可枚举方法“-”:

class Post < ActiveRecord::Base
[...]
  def other_posts
    user.posts - [self]
  end
[...]
end
class Post

然后你可以打电话给
@post。其他帖子

由于活动查询结果可以作为可枚举项返回,因此可以使用可枚举方法“-”:

class Post < ActiveRecord::Base
[...]
  def other_posts
    user.posts - [self]
  end
[...]
end
class Post

然后你可以打电话给
@post。其他帖子

由于活动查询结果可以作为可枚举项返回,因此可以使用可枚举方法“-”:

class Post < ActiveRecord::Base
[...]
  def other_posts
    user.posts - [self]
  end
[...]
end
class Post
然后你可以打电话给
@post。其他帖子

你可以这样试试

 post_result =  @post.user.posts - [@post]
后台:@post.user.posts是内存中的数组,只要您不作为关系访问它。[@post]是一个仅包含元素的数组,您要(在内存中)删除它。 @post.user.posts-[@post]执行数组减法。

您可以这样尝试

 post_result =  @post.user.posts - [@post]
后台:@post.user.posts是内存中的数组,只要您不作为关系访问它。[@post]是一个仅包含元素的数组,您要(在内存中)删除它。 @post.user.posts-[@post]执行数组减法。

您可以这样尝试

 post_result =  @post.user.posts - [@post]
后台:@post.user.posts是内存中的数组,只要您不作为关系访问它。[@post]是一个仅包含元素的数组,您要(在内存中)删除它。 @post.user.posts-[@post]执行数组减法。

您可以这样尝试

 post_result =  @post.user.posts - [@post]
后台:@post.user.posts是内存中的数组,只要您不作为关系访问它。[@post]是一个仅包含元素的数组,您要(在内存中)删除它。
@post.user.posts-[@post]执行数组减法。

我选择了这一个,因为它返回一个
ActiveRecord::Relation
,而其他的返回array.oops,不知怎的错过了它。好了,我选择了这个,因为它返回一个
ActiveRecord::Relation
,而其他的返回Arrays.oops,不知怎的错过了。好了,我选择了这个,因为它返回一个
ActiveRecord::Relation
,而其他的返回Arrays.oops,不知怎的错过了。好了,我选择了这个,因为它返回一个
ActiveRecord::Relation
,而其他的返回Arrays.oops,不知怎的错过了。好了。