私は2つの主要なモデルを持っているのRails 2.3.11のアプリがあります。Railsの団体
- 活動
- トランザクション
ライブサイト:http://iatidata.heroku.com
のGithub:https://github.com/markbrough/IATI-Data
すべてのトランザクションはアクティビティの下にネストされます。各アクティビティには複数のトランザクションがあります。
Railsでの関連付けの仕組みについて混乱していると思いますが、おそらく私がしようとしていることは不可能です。
本質的には、各国に属するすべての活動のトランザクションの総額を取得したいと考えています。それは、このエラーを与える
@thiscountry_value = @thiscountry_activities.transactions.sum(:value)
:だから、どのくらいのお金をインドに行って、どのくらいのアフガニスタンなど
これは動作します:
@thiscountry_activities.each do |a|
@thiscountry_value = @thiscountry_value + a.transactions.sum(:value)
end
しかし、これは動作しません
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
これはおそらくかなり単純な問題だと思いますが、何が起こっているのか分かりません。 2つのモデルは、id(アクティビティ)とactivity_id(トランザクション)を介して接続されています。
ありがとうございました!
ありがとうございました!それがうまくいくと思います。私はそれを試してみる。ありがとう。 – Mark