Tôi có một người dùng sở hữu nhiều điện thoại
Tôi có aa điện thoại trong đó có nhiều bản tóm tắt cuộc gọi
do đó người dùng của tôi có rất nhiều bản tóm tắt cuộc gọiRuby on Rails phương pháp xác định cho mảng
Bây giờ vào mã mà tôi có:
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
Tôi muốn tạo báo cáo hiển thị tất cả tóm tắt cuộc gọi cho điện thoại thuộc về người dùng nhất định đó. Tôi đi vào bộ điều khiển và đây là mã của tôi có:
def index
@phones = Phone.find(:all, :conditions => ["user_id = ?", @current_user.id])
@call_summaries = @phones.call_summaries.find(:all)
end
Nhưng điều này đang trở lại báo lỗi này:
undefined method `call_summaries' for #Array:0x476d2d0
Bất kỳ trợ giúp sẽ được rất nhiều đánh giá cao.
Ah này làm việc, cảm ơn. Chỉ một điều nữa, tôi thiết lập một khóa ngoại trong call_summaries vì các tên cột khác nhau. Và tôi cũng không tìm cột phones.id. Tôi đang tìm một khóa hex được tạo ra. Đây là SQL được tạo từ lệnh chính xác với khóa ngoài: SELECT call_summaries. * FROM call_summaries INNER JOIN phone ON call_summaries.reported_by = phones.id WHERE phones.user_id = 1 Nó phải là phones.hex_key thay vì phones.id. Làm thế nào để tôi thay đổi điều đó, tôi đã thử các phím nước ngoài nhưng trừ khi tôi đã làm một cái gì đó câm, mà không làm việc. Cảm ơn bạn lần nữa! – Ryan
Có vẻ như bạn sẽ cần sử dụng các tùy chọn: foreign_key và: primary_key trên cả hai đầu của liên kết. Trong CallSummary, ví dụ, hãy thử 'thuộc_to: phone,: foreign_key =>: report_by,: primary_key =>: hex_key' (và làm điều tương tự cho liên kết has_many trong Điện thoại). –