Ruby on rails Rails-搜索-重新排序属性

Ruby on rails Rails-搜索-重新排序属性,ruby-on-rails,ransack,Ruby On Rails,Ransack,我正在Rails应用程序中使用RansackGem。它按预期工作,但是如何在属性选择下拉框中重新排列属性列表?不幸的是,对我来说,用户的“名称”几乎是列表的底部,而理想情况下它应该是顶部 .field = f.attribute_fields do |a| = a.attribute_select associations: [:terms, :contact_informations, :educational_experiences, :home_towns, :local_re

我正在Rails应用程序中使用RansackGem。它按预期工作,但是如何在属性选择下拉框中重新排列属性列表?不幸的是,对我来说,用户的“名称”几乎是列表的底部,而理想情况下它应该是顶部

.field
  = f.attribute_fields do |a|
    = a.attribute_select associations: [:terms, :contact_informations, :educational_experiences, :home_towns, :local_residences, :permanent_addresses, :emergency_contact_informations]
上面是我当前选择的属性,现在它列出了所有用户属性,然后列出了每个关联的属性。在我的模型中,我使用以下方法过滤掉一些属性

def self.ransackable_attributes(auth_object = nil)
    super - ['id', 'first_name', 'middle_name', 'last_name', 'created_at', 'updated_at', 'encrypted_password', 'reset_password_token', 'reset_password_sent_at', 'remember_created_at',
              'sign_in_count', 'current_sign_in_at', 'last_sign_in_at', 'current_sign_in_ip', 'last_sign_in_ip']
  end

我在ransack github存储库中找到了以下内容:

def ransackable_attributes(auth_object = nil)
  column_names + _ransackers.keys
end
所以在我的模型中,我可以通过做一些不同的事情来覆盖这个方法

  def self.ransackable_attributes(auth_object = nil)
    column_names.unshift(column_names.delete('name', 'role')) - ['id', 'first_name', 'middle_name', 'last_name', 'created_at', 'updated_at', 'encrypted_password', 'reset_password_token', 'reset_password_sent_at', 'remember_created_at',
                  'sign_in_count', 'current_sign_in_at', 'last_sign_in_at', 'current_sign_in_ip', 'last_sign_in_ip']+ _ransackers.keys
  end
由于
column\u names
只是一个数组,我可以从数组中删除一个元素,然后使用
unshift
添加它。如果有人有更好的解决方案,请仍然张贴在这里