0

私は次の2つのモデルを持っています:

class Shelf < ActiveRecord::Model
    has_many :wines

    def self.order_by_oldest_bottle_of_wine
        #TODO: order by the oldest wine bottle...
    end
end

class Wine < ActiveRecord::Model
    belongs_to :shelf

    attr_accessible :produce_date
end

棚モデルでは、棚の中で最も古いワインボトル(つまり、最も古いワインボトルが最初にある棚)で棚を注文したいのですが、実装が100%確実ではありません。

どうもありがとう、

4

3 に答える 3

1

名前付きスコープを介してこれを行うことができます

Shelfモデルでは、次のように定義できます。

named_scope :order_by_oldest_bottle_of_wine, joins: :wines, order: "wines.produce_date DESC"

于 2012-12-03T06:07:36.550 に答える
0

Rails 3.xを使用している場合は、次のいずれかを使用できます

解決策1:

def self.order_by_oldest_bottle_of_wine
  self.wines.order("produce_date DESC")
end

解決策2: スコープを使用する場合

class Wine < ActiveRecord::Model
  belongs_to :shelf
  scope :ordered_by_produce_date, order("produce_date DESC")
  attr_accessible :produce_date
end

class Shelf < ActiveRecord::Model
  has_many :wines
  def self.order_by_oldest_bottle_of_wine
    self.wines.ordered_by_produce_date
  end
end
于 2012-12-03T06:52:34.620 に答える
0
def self.order_by_oldest_bottle_of_wine
    self.wines.find(:all, :order=>"produce_date DESC")
 end
于 2012-12-03T06:04:03.787 に答える