2012-01-17 27 views
1

私は出荷品に1つの請求書があります。請求書は出荷に属します。 出荷にはreference_number属性があります。Rails 3.仮想属性によるデフォルトのソート方法は?

私は、参照番号でソートインデックスページで請求書を一覧表示したい

shipment.rb 
default_scope :order => :file_number 

...このように、私はactiveadminを使用していると私はインデックスページでfile_numberでソート出荷を一覧表示問題は、参照番号が出荷に基づく仮想属性であるということです。この場合

invoice.rb 
def reference_number 
    if self.shipment.nil? 
    a = "no ref" 
    else 
    self.shipment.file_number 
    end 
end 
+0

あなたがアプリケーション内で並べ替えることができ。 –

+0

もし私がこれを行うならば、 'link_to invoice.reference_number、admin_invoice_path(invoice)'私はそのような列はありません:invoice.reference_numberエラー – leonel

+0

このmeodを追加した後にサーバーを再起動しましたか?この問題は、あなたのアプリがすでに開発中の生産にあり、問題が別の場所にあるときに問題になります... – davidb

答えて

1
default_scope includes(:shipment).order("shipments.file_number") 

ビュー時にshipment.blankで「NO REF」の文字列のためのロジックを追加することができますので、明らかに全てのNILSが一緒に注文するのでしょうか?ビュー内のreference_numberメソッドに固執してください。

1

私はあなたにそれはあなたがビューを埋めるとき、あなたは(ソート)を含める必要があります!、だ奇妙な方法で、最初のrefactory

invoice.rb 
def reference_number 
    self.shipment.nil? ? "no ref" : self.shipment.file_number 
end 

def <=> (obj2) 
    self.reference_number <=> obj2.reference_number 
end 
def < (obj2) 
    self.reference_number < obj2.reference_number 
end 
def > (obj2) 
    self.reference_number > obj2.reference_number 
end 
def == (obj2) 
    self.reference_number = obj2.reference_number 
end 

を提案することができます:

@invoices= Invoice.all.sort 
関連する問題