3

私はここに2つのモデルを関連付けています:

class Order < ActiveRecord::Base
  belongs_to :customer
  ...
end

class Customer < ActiveRecord::Base
  has_many :orders
end

顧客は多くの注文を持つことができ、注文は1人の顧客に属することができます。次のフィールド値を表示するリストされたテーブルを表示しているということです

ORDER ID| CUSTOMER NAME |...

顧客名はcustomer[:name]を参照します-findメソッドを使用し、次のように結合を渡すことで並べ替えることができることがわかりました。

Order.find(:all, :joins => :customer, :order => 'customer.name asc')

ただし、ここで結果をページ分割する必要があり、このようなことはできないようです。ここでは、ページ付けにカミナリの宝石を使用しています。

Order.find(:all, :joins => :customer, :order => 'customer.name asc').page(5) 
# doesn't work throws an error nomethoderror on page

何か案は?

4

3 に答える 3

4

「新しい」Rails3クエリインターフェイスを使用する必要があります。

Order.joins(:customer).order("customers.name asc").page(5)
于 2013-01-15T11:19:43.093 に答える
2

あなたはこのようなことをすることができます:

Order.joins(:customer).select('orders.*, customers.name as customers_name').order('customers_name ASC').page(5)

カミナリの宝石で私のために働きます。また、すべてのオブジェクト結果にcustomers_nameメソッドがあります。
selectメソッドの詳細については、 http: //guides.rubyonrails.org/association_basics.htmlを参照してください。

于 2013-01-15T11:07:38.353 に答える
1

「ページ」はカミナリのために機能しますが、オーダーの方法ではありません

orders = Order.joins(:customer).order("customers.name asc")

Kaminari.paginate_array(orders).page(page)
于 2013-01-15T12:42:22.087 に答える