#ruby-on-rails #ruby #models
#ruby-on-rails #ruby #Модели
Вопрос:
У меня есть две таблицы с таблицей соединений между ними:
Родительский элемент:
дочерние страницы:
объединение объектов: Сетки
В моих моделях они настроены на отношения «многие ко многим» (has_many through):
class Page < ActiveRecord::Base
belongs_to :books
has_many :grids
has_many :things, :through => :grids
end
class Thing < ActiveRecord::Base
has_many :grids
has_many :pages, :through => :grids
end
class Grid < ActiveRecord::Base
belongs_to :page
belongs_to :thing
end
Теперь я хочу иметь возможность сортировать «вещи», используя идентификатор заказа из grid, называемый number
, как я могу это сделать?
Спасибо!
Комментарии:
1. ваше определение модели Thing отсутствует
2. Извиняюсь.. это взаимосвязь между страницей и вещами, а не книгой, я исправил это в исходном сообщении 🙂
Ответ №1:
вам нужна опция «:include (s)» в вашем методе поиска, а затем «order_by ()» …
вы бы использовали что-то вроде этого:
Thing.where(...some condition or all..., :include => :grid ).order_by(grid.number)
См:
http://guides.rubyonrails.org/active_record_querying.html
http://m.onkey.org/active-record-query-interface
http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html
Комментарии:
1. И это
...order_by(grid.number)
действительно? Что этоgrid
в этом контексте? Должно ли это быть...order_by('grid.number')
?2. Спасибо! — Это сработало, за исключением того, что это «.order (grids.number)», также отличные ссылки, именно то, что я искал..