Mam użytkownik, który posiada wiele telefonów
mam aa komórkowy, który ma wiele zestawień połączeń
dlatego mój użytkownik ma wiele zestawienia połączeńRuby on Rails metoda niezdefiniowany na tablicy
Teraz do kodu, który mam:
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
Chciałbym wygenerować raport, który pokazuje wszystkie podsumowania połączeń dla telefonów, które należą do tego konkretnego użytkownika. Idę do sterownika, a to jest mój kod tam:
def index
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.call_summaries.find(:all)
end
Ale ta wraca ten błąd:
undefined method `call_summaries' for #Array:0x476d2d0
Każda pomoc będzie bardzo mile widziane.
Ah ten pracował, dzięki. Jeszcze jedno, ustawiłem klucz obcy w call_summaries, ponieważ nazwy kolumn są różne. I nie szukam również kolumny phones.id. Szukam wygenerowanego klucza szesnastkowego. Jest to SQL, który jest generowany z właściwego polecenia z kluczem obcym. SELECT * FROM call_summaries call_summaries INNER JOIN telefonów na call_summaries.reported_by = phones.id GDZIE phones.user_id = 1 Powinno być phones.hex_key zamiast phones.id. Jak to zmienić, próbowałem kluczy obcych, ale jeśli nie zrobiłem czegoś głupiego, to nie zadziałało. Jeszcze raz dziękuję! – Ryan
Wygląda na to, że musisz użyć opcji: foreign_key i: primary_key na obu końcach powiązania. W CallSummary na przykład spróbuj 'belongs_to: phone,: foreign_key =>: reported_by,: primary_key =>: hex_key' (i zrób to samo dla has_many association w Phone). –