Rails 3. как сделать запрос вложенного атрибута? - PullRequest
0 голосов
/ 18 января 2012

у меня отгрузка имеет один счет;Счет относится к отгрузке.Таблица отгрузок содержит таблицу customer_id.

Мне нужно найти все счета-фактуры ...

  • для конкретного клиента и
  • , для которых customer_account_balance равен0

Я пробовал много разных подходов, но, похоже, ни один из них не работает, этот последний вызвал у меня ошибку private method select или что-то в этом роде ...

reports_controller.rb
i = Invoice.where("customer_open_balance != 0")
s = Shipment.find_by_customer_id(@customer.id)
shipment_ids_from_invoices = i.map{|x| x.shipment_id}
@shipments = s.select{|z| shipment_ids_from_invoices.include? z.id}

Ответы [ 2 ]

1 голос
/ 18 января 2012
class Invoice

  belongs_to :shipment

  scope :with_customer, lambda { |customer_id| joins(:shipment).where(:customer_id => customer_id) }

  scope :cero_balance, joins(:shipment).joins(:customer).where("customer_account_balance <> 0")

end

Тогда попробуйте

#for a particular customer with id 1
Invoice.with_customer 1

#that have customer_account_balance of 0
Invoice.cero_balance
1 голос
/ 18 января 2012

Это работает?

@shipments = Shipment.joins(:invoice).where(:customer_id => @customer.id).where("customer_account_balance <> 0")

Похоже, ваша схема выглядит следующим образом:

Shipment: (customer_id, ...)
Invoice: (customer_open_balance, shipment_id, ...)

Вы положили has_one :invoice в Shipment.rb и belongs_to :shipment в Invoice.rb

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...