Как сделать заказ по полям таблицы с множественными отношениями? - PullRequest
1 голос
/ 26 августа 2010

Мне нужно сгенерировать список чеков в рельсах, которые необходимо упорядочить по полю отношения заказа товара (payment_method_meta_type.name).

Модели:

Receipt
Deposit
PaymentMethodMetaType

В модели депозита:

class Deposit < ActiveRecord::Base

  belongs_to :payment_method_meta_type
  has_many   :receipts, :class_name=>"Receipt", :foreign_key=>"deposit_id", 
                    :dependent => :destroy
end

Я получил Массив квитанций в контроллере уже:

@receipts = Receipt.find(:all, :conditions => ["date BETWEEN ? AND ?", 
  @start_date, @end_date], :order => "date DESC, id DESC", 
  :limit => limit, :offset => offset)

В представлении я также могу показать payment_method_meta_type.name

- @receipts.each do |o|
  %tr.
    .....
    %td #{o.receipt_number}
    %td #{o.deposit.payment_method_meta_type.name}
    .....

Нокак я могу показать список по порядку receipts.deposit.payment_method_meta_type.name в контроллере при создании коллекции массива квитанций?

Ответы [ 2 ]

0 голосов
/ 09 сентября 2010

thx, я наконец-то разобрался, используйте 'include' в строке запроса

@receipts = Receipt.find(:all, :include => {:deposit => [:payment_method_meta_type] } ,:conditions => ["Receipts.business_date BETWEEN ? AND ?", @current_month_start_date, @current_month_end_date],:order => "tag_types.name , Receipts.business_date DESC",:limit => limit)
0 голосов
/ 26 августа 2010

Попробуйте это:

@receipts = Receipt.all(:joins => {:deposit => :payment_method_meta_type},
              :conditions => {:date => @start_date..@end_date}, 
              :order => "payment_method_meta_types.name ASC", 
              :limit => limit, :offset => offset)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...