У меня есть приложение Rails 2.3.11, которое имеет две ключевые модели:
Livesite: http://iatidata.heroku.com
Github: https://github.com/markbrough/IATI-Data
Каждая транзакция вкладывается в действие.Каждое действие имеет несколько транзакций.
Я думаю, что я запутался в том, как работают ассоциации в Rails, но, возможно, то, что я пытаюсь сделать, невозможно.
По сути, я хочуполучить общую стоимость транзакций всех видов деятельности, которые принадлежат каждой стране.Так сколько денег ушло в Индию, сколько в Афганистан и т. Д.
Это работает:
@thiscountry_activities.each do |a|
@thiscountry_value = @thiscountry_value + a.transactions.sum(:value)
end
Но это не работает:
@thiscountry_value = @thiscountry_activities.transactions.sum(:value)
Этовыдает эту ошибку:
undefined method `transactions' for #<Array:0xb5670038>
@ thiscountry_activities определяется следующим образом:
@activities = Activity.find(:all, :conditions=> @conditions)
Это помещается в цикл, который получает код страны каждого получателя.@ условия:
@conditions[:recipient_country_code]=*each recipient country code, e.g. AF*
Похоже, у меня какая-то проблема с ассоциацией.Вот как настраиваются модели:
class Transaction < ActiveRecord::Base
belongs_to :activity
end
class Activity < ActiveRecord::Base
has_and_belongs_to_many :policy_markers
has_and_belongs_to_many :sectors
has_many :transactions
end
Я думаю, что это, вероятно, довольно простая проблема, но я не могу понять, что происходит.Две модели связаны друг с другом через id (в Activity) и activity_id (в транзакциях).
Спасибо!