2010-10-15 26 views

Trả lời

60

Bạn chỉ cần phải cẩn thận hơn với thứ tự của các phương pháp trong trường hợp này:

Student.includes(:teacher).find(12) 
+0

có vẻ như không hoạt động. – 99miles

+2

Vậy nó đang làm gì? Bạn luôn có thể sử dụng cách cũ: 'Student.find (12,: include =>: teacher)' –

+2

Nó nhận được bản ghi ở id 12, nhưng không có sự bao gồm. Cách "cũ" không hoạt động trong phiên bản 3.0 nữa. Tôi có thể làm cho nó hoạt động theo cách này Student.find_by_id (12) .to_json (: include =>: teacher) nhưng đó không phải là những gì tôi muốn – 99miles

0

Bạn có thể thử "ở đâu" thay vì "tìm thấy":

Student.includes(:teacher).where(:id => 12) 
+0

; (không, điều đó không hoạt động hoặc – 99miles

+0

Tôi đã thử một cái gì đó tương tự trên một trong các mô hình của tôi và nó làm việc trong Rails 3, bạn có chắc là bạn có các mối quan hệ "thuộc_to" và "has_many" được thiết lập không? –

+0

Có, nó rất lạ, nó hoạt động tốt khi tôi đưa vào phương thức to_json, vì vậy có vẻ như mọi thứ được thiết lập tốt . – 99miles

1
Student.includes(:teacher).where(:id => 12) 

sẽ hoạt động.

Chúng tôi có thể xem các mô hình của bạn không?

6

Cũ câu hỏi tôi biết, nhưng chỉ trong trường hợp này sẽ giúp người ...

Làm cái gì đó như @student = Student.includes(:teacher).where(:id => 12) trả về một mảng và vì vậy sau đó sử dụng một cái gì đó như @student.id không hoạt động.

Thay vào đó bạn có thể làm:

@student = Student.includes(:teacher).where(:id => 12).first 

Mặc dù Student.includes(:teacher).find(12) nên làm việc, nhưng bạn có thể sử dụng phiên bản where nếu bạn cần phải tìm kiếm theo khác/nhiều lĩnh vực.