我有以下两种模式:
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%确定实施。
非常感谢,
答案 0 :(得分:1)
您可以通过命名范围
执行此操作在Shelf
模型中,您可以这样定义:
named_scope :order_by_oldest_bottle_of_wine, joins: :wines, order: "wines.produce_date DESC"
答案 1 :(得分:0)
def self.order_by_oldest_bottle_of_wine
self.wines.find(:all, :order=>"produce_date DESC")
end
答案 2 :(得分: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