Tom*_*man 5 activerecord ruby-on-rails associations
在我的在线商店中,如果订单处于"已授权"状态并且尚未有任何关联的货件,则该订单已准备好发货.现在我这样做:
class Order < ActiveRecord::Base
has_many :shipments, :dependent => :destroy
def self.ready_to_ship
unshipped_orders = Array.new
Order.all(:conditions => 'state = "authorized"', :include => :shipments).each do |o|
unshipped_orders << o if o.shipments.empty?
end
unshipped_orders
end
end
Run Code Online (Sandbox Code Playgroud)
有没有更好的办法?
s01*_*ist 12
在使用AREL的Rails 3中
Order.includes('shipments').where(['orders.state = ?', 'authorized']).where('shipments.id IS NULL')
Run Code Online (Sandbox Code Playgroud)
您还可以使用常规查找语法查询关联:
Order.find(:all, :include => "shipments", :conditions => ["orders.state = ? AND shipments.id IS NULL", "authorized"])
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4862 次 |
| 最近记录: |