Как можно отсортировать массив идентификаторов людей по Person.name, полученному из модели Group, которая имеет ассоциацию has_many с моделью Person и проходит через модель GroupParticipation?
<OpenStruct id=1, name="GroupName", person_ids=[199, 276, 233, 214, 248, 252, 236]>
Модель человека:
# Table name: people
#
# id :integer not null, primary key
# name :string(255)
has_many :groups, through: :group_participations, source: :person_group
Персона :: Групповая модель:
# Table name: person_groups
#
# id :integer not null, primary key
# name :string(255)
# details :hstore
# created_at :datetime
# updated_at :datetime
# show_job_description :boolean default(FALSE)
has_many :group_participations, foreign_key: "person_group_id"
has_many :people, through: :group_participations
Персона :: Групповая модель участия
# Table name: person_group_participations
#
# id :integer not null, primary key
# person_group_id :integer
# person_id :integer
# created_at :datetime
# updated_at :datetime
# registration_date :date
# expiry_date :date
belongs_to :person
belongs_to :person_group, class: Person::Group
ContactsController
> def index
> @groups = Person::Group.all
> people_ids = @groups.map(&:person_ids).flatten
> @people = Person.where(ids: people_ids)
> end
index.html.slim
- @groups.each do |group|
h2 = group.name
- group.person_ids.each do |id|
- next if (person = @people.find{|p| p.id == id}).blank?
details.full-width
.name= person.name