Ruby on rails Rails:如何从有很多关系的站点获取集合?
用户属于\u来源Ruby on rails Rails:如何从有很多关系的站点获取集合?,ruby-on-rails,Ruby On Rails,用户属于\u来源 源有很多用户 用户\u controller.rb @users = User.where('u_company = "IBM" ') 如何获取@users所属的source@sources集合?您需要通过连接获取资源: @sources = Source.includes(:users).where(users: {id: @users}) 如果不需要单独收集@users,则可以按如下方式运行单个查询: @sources = Source.includes(:users)
源有很多用户 用户\u controller.rb
@users = User.where('u_company = "IBM" ')
如何获取@users所属的source
@sources
集合?您需要通过连接获取资源:
@sources = Source.includes(:users).where(users: {id: @users})
如果不需要单独收集@users
,则可以按如下方式运行单个查询:
@sources = Source.includes(:users).where(users: {u_company: 'IBM'})
您需要通过连接获取资源:
@sources = Source.includes(:users).where(users: {id: @users})
如果不需要单独收集@users
,则可以按如下方式运行单个查询:
@sources = Source.includes(:users).where(users: {u_company: 'IBM'})
构建此关联的常用Rails方法是在用户模型上有一个
:source_id
列,以便您可以检索关联的记录,例如:
class User < ActiveRecord::Base
belongs_to :source
end
class Source < ActiveRecord::Base
has_many :users
end
@source = Source.find_by_name('IBM') # assumes that the IBM value is stored in the :name column
# => #<Source id: 123, name: "IBM">
@users = @source.users
# => [#<User id: 456, source_id: 123>, #<User id: 457, source_id: 123>]
# or...
@users = User.where(source_id: @source.id)
如果您需要更多详细信息,那么您必须提供有关数据的结构以及如何将它们链接在一起的更多信息。构建此关联的常用Rails方法是在用户模型上有一个
:source\u id
列,以便您可以检索关联的记录,例如:
class User < ActiveRecord::Base
belongs_to :source
end
class Source < ActiveRecord::Base
has_many :users
end
@source = Source.find_by_name('IBM') # assumes that the IBM value is stored in the :name column
# => #<Source id: 123, name: "IBM">
@users = @source.users
# => [#<User id: 456, source_id: 123>, #<User id: 457, source_id: 123>]
# or...
@users = User.where(source_id: @source.id)
如果您想了解更多详细信息,那么您必须提供更多有关数据结构以及如何将它们链接在一起的信息。我认为
@sources = @users.includes(:source).map(&:source).uniq
我想这就是你想要的
@sources = @users.includes(:source).map(&:source).uniq
是您想要的如果用户像这样收集,我可以使用相同的东西吗
@users=user。where('u_company=“IBM”)
@MarcoSong请检查我在上面答案中的编辑。如果用户像这样收集,我可以使用相同的东西吗@users=user。where('u company=“IBM”)
@MarcoSong请检查我在上面答案中的编辑。