Ruby on rails Rails按联接表行排序

Ruby on rails Rails按联接表行排序,ruby-on-rails,sorting,join,jointable,Ruby On Rails,Sorting,Join,Jointable,我通过联接表建立了多对多关系: team.rb has_many :partners_teams has_many :partners, through: :partners_teams partner.rb has_many :partners_teams has_many :teams, through: :partners_teams partners_team.rb belongs_to :team belongs_to :partner self.primary_key = :pa

我通过联接表建立了多对多关系:

team.rb

has_many :partners_teams
has_many :partners, through: :partners_teams
partner.rb

has_many :partners_teams
has_many :teams, through: :partners_teams
partners_team.rb

belongs_to :team
belongs_to :partner
self.primary_key = :partner_id
include RankedModel
ranks :row_order, with_same: :team_id
default_scope { order(row_order: :asc) }
我在联接表teams\u partners中设置了一个额外的行顺序整数

合作伙伴是团队的嵌套资源

在partnersindex和cardsshow中,当我从设计的卡请求合作伙伴时,如何处理row_order列

目前,我认为它工作正常:

合作伙伴索引:

  def index
   @card = Card.find(params[:id])
   @partners = @team.partners.all
  end
团队展示

def show
 @partners = @team.partners.all
end
我尝试了几种连接和包含的方法,但没有成功。这对我来说还是有点复杂

此外,我使用收获排名模型gem对我的合作伙伴进行排序。除了上面描述的初始订单问题外,它似乎工作得很好。事物排序模型使用.rank方法对事物进行排序。例:合伙人。排名:按行顺序排列。我不确定这是否需要考虑,我的意思是我可以使用Partners.orderrow\u order::desc,但这可能会对以下排序产生影响

谢谢你的帮助,真的


非常感谢。

看看。谢谢你的回答,谢尔盖。但是,我的行顺序在联接表中,所以作用域似乎对我不起作用。此外,如果有必要,我不会使用Harvest提供的rank:row_顺序。也许控制器中的一个简单请求就可以完成这项工作?所以,像不为您工作这样的事情?不,我在rails 4上,所以默认范围->{orderrow\u order::asc}执行这个技巧。但是我仍然想知道为什么@partners=@team.partners.order'teams\u partners.row\u order'不起作用,因为sql看起来是正确的。我听说默认范围使用起来很危险,因为它是rails定义的范围的两倍。这就是我想避免使用它的原因。但这看起来很有效。。。