のための未定義のメソッドは、私が持っている多くの携帯電話を所有しているユーザー
私は多くのコールの要約を持つAAの携帯電話を持っている
ので、私のユーザー持っている多くのコール要約私が持っているコードに今 ルビー配列
class User < ActiveRecord::Base
has_many :phones
has_many :call_summaries, :through => :phones
end
class Phone < ActiveRecord::Base
belongs_to :user
has_many :call_summaries
end
class CallSummary < ActiveRecord::Base
belongs_to :phones
end
特定のユーザーに属する電話機のすべてのコールサマリーを表示するレポートを生成したいとします。私は、コントローラに入り、これが私のコードです:
def index
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.call_summaries.find(:all)
end
しかし、これは、このエラーが返されます。
undefined method `call_summaries' for #Array:0x476d2d0
すべてのヘルプは非常に高く評価されるだろう。
ああこれは、おかげで働きました。ただもう一つ、カラム名が異なるのでcall_summariesに外部キーを設定しました。私はphones.id列も探していません。生成された16進数のキーを探しています。これは、外部キーで正しいコマンドから生成されたSQLです。 SELECT call_summaries * call_summariesから内はphones.user_id = 1 それはphones.hex_keyあるべきcall_summaries.reported_by = phones.id ONの携帯電話を登録しようphones.idの代わりに。どのように私はそれを変更する、私は外のキーを試みたが、私は何かばかげていない限り、それは動作しませんでした。 もう一度おねがいします! – Ryan
アソシエーションの両端で:foreign_keyと:primary_keyオプションを使用する必要があるようです。たとえば、CallSummaryでは、「belongs_to:phone、:foreign_key =>:reported_by、:primary_key =>:hex_key'を試してください(電話でhas_many関連についても同じことをしてください)。 –