2011-05-03 16 views
6
class OrderItem belongs_to Item and belongs_to Order 

class Item has_many OrderItems and belongs_to ItemType 

class ItemType has_many Items 

class Order has_many OrderItems 

me gustaría, dentro de la Orden, encontrar todos los artículos de pedido cuyos artículos son de tipo ItemTypeRails 3 ActiveRecord: Encuentra modelo mediante la búsqueda de su asociación

def get_by_item_type(id) 
    order_items.where(:item => {:item_type_id => 3}) 

Obviamente me puede hacer esto mediante la búsqueda de todos los artículos de pedido, iterando, probando y construyendo mi propia colección. No hay problema, pero me pregunto si hay otra forma.

Gracias /j

Respuesta

4

Esto se haría con:

def get_by_item_type(id) 
    order_items.joins(:item).where(:item_type_id => id) 
end 

Si se produce un error sobre una columna no existente/ambigua, echar un vistazo a

order_items.joins(:items).to_sql 

en para encontrar los nombres correctos de las columnas

+0

Gracias, voy a probar esto tan pronto como sea posible, ya que se ve bien ... Gracias –

+0

Finalmente llegó a implementar esta parte del sistema y funcionó como un encanto. –

Cuestiones relacionadas