Tôi sử dụng ví dụ với Rails 3, nhưng tôi tin rằng điều này cũng đúng với Rails 2.3.Rails, tại sao tham gia trả về mảng với các giá trị không phải là uniq?
Giả sử, tôi có mô hình Thành phố có nhiều Địa điểm. Tôi cố gắng tìm Thành phố có địa điểm.
tôi sử dụng đoạn mã sau:
City.joins(:locations)
Nhưng mảng đầu ra là:
=> [#<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">, #<City id: 5, name: "moscow", created_at: "2010-07-02 15:09:16", updated_at: "2010-07-02 15:09:16">]
Độ dài mảng là 4 (số địa điểm của Moscow).
Trường hợp nào có thể hữu ích? Cho mục đích gì là 4 bản sao của một đối tượng trong mảng đầu ra?
Tôi có thể sử dụng City.joins (: vị trí) .uniq, nhưng tôi bị mất nhanh nhẹn arel.
Tôi có hai câu hỏi:
- Tại sao gia nhập lợi nhuận mảng phi duy nhất?
- Ưu tiên sử dụng thay vì tham gia cho mục đích này là gì?
Cảm ơn bạn! nhóm là những gì tôi cần! Nhưng tại sao đường ray không muốn tự nhóm? Đối tượng đường ray đầu ra là mảng của các thành phố không có bất kỳ vị trí nào. Và IMHO không có trường hợp sử dụng cho đầu ra như vậy. – petRUShka
Cảm ơn câu trả lời hữu ích. Một câu hỏi - City.x sẽ không tự nhiên mang lại thành phố mà không cần câu lệnh chọn? –
@edebill có cách nào để bỏ qua nhóm này ('cities.id') 'trên mỗi truy vấn không? – asiniy