2011-01-14 38 views
61

Câu hỏi ngớ ngẩn nhưng tôi có một số nhầm lẫn kéo dài về những gì, chính xác, một "tài nguyên" là trong Rails. Thuật ngữ này được sử dụng ở mọi nơi nhưng tôi có cảm giác hài hước, nó có thể được sử dụng khá lỏng lẻo. Nó được tham chiếu trong mô hình, bộ điều khiển và, theo đúng nghĩa đen, trong routes.rb."Tài nguyên" trong Rails là gì?

Đây có phải là tuyến đường cụ thể không? Ví dụ: map.resources ánh xạ 7 tài nguyên "RESTful". Vì vậy, ví dụ về một tài khoản sẽ là cuộc gọi đến, ví dụ: hành động index của bộ điều khiển của một lớp cụ thể?!?

Đây có phải là tham chiếu đến toàn bộ trang/đối tượng đang được truy lục không? hoặc có lẽ, hẹp hơn, một bảng cơ sở dữ liệu? hoặc hàng được truy xuất?

Có điều gì khác không?

Dù sao, hy vọng ai đó có thể đặt cho tôi thẳng ...

Trả lời

80

Bất kỳ đối tượng nào bạn muốn người dùng có thể truy cập qua URI và thực hiện các hoạt động CRUD (hoặc một số tập hợp con) có thể được coi là tài nguyên. Theo nghĩa Rails, nó là thường là một bảng cơ sở dữ liệu được đại diện bởi một mô hình và hành động thông qua bộ điều khiển. Ví dụ, bạn có thể có tài nguyên User (với một bảng users trong DB của bạn). Đây được đại diện bởi một mô hình User, được ánh xạ tới users_controller với map.resources :users (mà sau đó tạo ra các tuyến đường như /users (một tập hợp các nguồn lực tài) và /users/1 (một nguồn lực tài cụ thể).

Bạn hành động theo những nguồn lực bằng cách sử dụng thích hợp . HTTP phương pháp khi thực hiện cuộc gọi đến những tài nguyên POST đến việc thu thập tài nguyên (/users) tạo ra một kỷ lục mới; GET lấy một danh sách các nguồn (/users) hoặc một người dùng cụ thể (/users/1) PUT cập nhật một người dùng cụ thể (/users/1/), và DELETE. phá hủy người dùng đó Các URL giống nhau, nhưng kết quả (và hành động điều khiển) có thể khác nhau dựa trên động từ HTTP. Ý tưởng, mặc dù là /users/1 luôn có nghĩa là "Tôi đang tương tác với Người dùng có ID # 1", bất kể hành động là gì.

+0

Nếu tôi có tài nguyên không sử dụng mô hình cơ sở dữ liệu (nó sử dụng API của dịch vụ riêng biệt cho sự kiên trì), sử dụng đường ray "tài nguyên" phím tắt hoặc tôi tốt hơn hết chỉ cần xác định các tuyến đường bằng tay? – Jonah

7

Dưới đây là một good article thảo luận về cách nhất các nhà phát triển nghĩ rằng "tài nguyên" là synonomous với bảng cơ sở dữ liệu, lập luận, tôi đoán, là rằng bản đồ đến tài nguyên là ánh xạ bộ điều khiển tới bảng cơ sở dữ liệu đó (hoặc, với ActiveResource, đến một địa chỉ REST khác).

Về cơ bản, tôi nghĩ rằng "tài nguyên" là "dữ liệu được lưu giữ". map.resources ánh xạ 7 hành động RESTful thành một bộ dữ liệu cụ thể.

Nhưng tôi chưa nghĩ về nó quá sâu. Câu hỏi hay!

3

Tôi nghĩ rằng họ có thể có nghĩa là nó theo nghĩa web nói chung, tức là, Resource (Web):

các referent của bất kỳ Uri

Tôi không nghĩ rằng nó có bất cứ điều gì để làm với các bảng cơ sở dữ liệu.

3

mở thư mục mô hình của bạn, đó là gợi ý về những tài nguyên bạn có! ví dụ: người dùng, hình ảnh, nhận xét ...

Các vấn đề liên quan