2013-07-18 20 views

Trả lời

41

Khi bạn tạo mô hình, bạn sẽ có được một mô hình cũng như một số thành phần liên quan. Một trong những cách yêu thích của tôi giải thích chủ đề như thế này là để thực sự thử nó ra hoặc khuyến khích người khác để thử nó, vì vậy nếu tôi được nhập lệnh rails generate model Foo name:string description:text trong một dự án Rails, tôi sẽ nhận được:

invoke active_record 
    create db/migrate/20130719012107_create_foos.rb 
    create app/models/foo.rb 
    invoke test_unit 
    create  test/unit/foo_test.rb 
    create  test/fixtures/foos.yml 

Đầu tiên dòng gọi Active Record, về cơ bản gắn mô hình của bạn với cơ sở dữ liệu của bạn. Dòng tiếp theo tạo ra một tệp được gọi là tệp di chuyển. Tệp di chuyển chứa các hướng dẫn để thay đổi cơ sở dữ liệu của bạn. Tệp di chuyển đầu tiên này tạo bảng cơ sở dữ liệu được gọi là 'foos' và nó cũng sẽ tạo cột cho "name" và "description".

Dòng tiếp theo làm cho chính mô hình. Mô hình cơ bản là một lớp Ruby kế thừa từ Active Record. Điều này có nghĩa là bất kỳ phương thức nào có thể được gọi trong Active Record bây giờ có thể được gọi trong mô hình của bạn. Ba dòng cuối cùng về cơ bản tạo các tệp thử nghiệm có liên quan cho mô hình của bạn. Nếu bạn đang sử dụng RSpec, các tệp đặc tả sẽ được tạo thay thế.

Nếu ứng dụng Rails của bạn chỉ chứa các mô hình, bạn sẽ không có bất kỳ dạng xem nào hiển thị thông tin trên trang, cũng như bạn sẽ không có hướng dẫn kiểm soát luồng thông tin. Các lựa chọn của bạn sẽ là tạo ra các bộ điều khiển (mà lần lượt tạo ra các khung nhìn của bạn) hoặc để tạo ra một giàn giáo, tạo ra mô hình, khung nhìn, bộ điều khiển và ghi vào tệp routes.rb của bạn. Nếu tôi chạy rails generate scaffold foo tôi sẽ nhận được:

invoke active_record 
    create db/migrate/20130719013307_create_foos.rb 
    create app/models/foo.rb 
    invoke test_unit 
    create  test/unit/foo_test.rb 
    create  test/fixtures/foos.yml 
    invoke resource_route 
    route resources :foos 
    invoke scaffold_controller 
    create app/controllers/foos_controller.rb 
    invoke erb 
    create  app/views/foos 
    create  app/views/foos/index.html.erb 
    create  app/views/foos/edit.html.erb 
    create  app/views/foos/show.html.erb 
    create  app/views/foos/new.html.erb 
    create  app/views/foos/_form.html.erb 
    invoke test_unit 
    create  test/functional/foos_controller_test.rb 
    invoke helper 
    create  app/helpers/foos_helper.rb 
    invoke  test_unit 
    create  test/unit/helpers/foos_helper_test.rb 
    invoke assets 
    invoke coffee 
    create  app/assets/javascripts/foos.js.coffee 
    invoke scss 
    create  app/assets/stylesheets/foos.css.scss 
    invoke scss 
identical app/assets/stylesheets/scaffolds.css.scss 

Để trả lời câu hỏi của bạn, lợi thế của giàn giáo là nó nhanh chóng, dễ dàng và tất cả mọi thứ được cấu hình sẵn cho bạn. Tuy nhiên, lợi thế của việc tạo ra các mô hình độc lập với giàn giáo (và sau đó lần lượt tạo ra bộ điều khiển/chế độ xem khi cần và tự viết tệp routes.rb) là bạn có nhiều quyền kiểm soát hơn đối với ứng dụng của mình và giao diện và chức năng, bạn tránh mã không cần thiết, bạn có thể sử dụng Phát triển theo hành vi hoặc Phát triển theo hướng thử nghiệm và có lẽ những thứ khác mà người khác có thể muốn thêm.

Lời khuyên cuối cùng của tôi là: Rails rất thân thiện với người dùng, vì vậy hãy thử tự thử nghiệm. Bạn có thể hoàn tác bất kỳ lệnh generate nào có lệnh destroy tương ứng, vì vậy, ví dụ rails destroy scaffold Foo sẽ xóa tất cả các tệp được tạo bởi rails generate Scaffold Foo name:string description:string, do đó bạn không phải lo lắng về việc không thể hủy ngang dự án bằng cách thử nghiệm.

+0

Tôi cũng nên mã hóa tuổi bạn đọc bất kỳ Rails Hướng dẫn chính thức về các chủ đề này ... Tôi cung cấp một cái nhìn tổng quan khá cao về những thứ như Active Record và Migrations, nhưng hy vọng đủ để trả lời câu hỏi của bạn! – aceofbassgreg

+0

câu trả lời tuyệt vời cảm ơn bạn rất nhiều, bạn đã giúp tôi rất nhiều – SsouLlesS

+0

Tôi đã có cùng một câu hỏi. Lời giải thích tuyệt vời. Cảm ơn. – whitehat

4

Tạo một giàn giáo bao gồm tạo ra một mô hình mà còn tạo ra

  • tuyến RESTful
  • một bộ điều khiển với tất cả các hành động để xử lý RESTful của mô hình
  • quan điểm cần thiết bởi bộ điều khiển
  • kiểm tra khai

Giàn giáo là một khởi đầu tốt cho người dùng Rails mới.

0

Người dùng mới rất có thể sẽ bị nhầm lẫn bởi giàn giáo vì họ sẽ không hiểu cách tất cả các thành phần hoạt động cùng nhau. Giàn giáo có lẽ là tốt nhất cho những người dùng có kinh nghiệm muốn có một lối tắt cho công việc mà họ thường lặp lại.

0

Với

$rails generate scaffold <name> 

bạn có thể tự động tạo ra một sẵn sàng sử dụng bộ điều khiển, mô hình, và quan điểm với một CRUD đầy đủ (Create, Read, Update, Delete) giao diện web. Đó là cách dễ dàng hơn và nhanh hơn so với việc tạo ra các mô hình, nhưng mã mà nó tạo ra dường như không hoàn hảo cho ứng dụng của bạn.

A scaffold tuyệt vời để sử dụng khi nói đến các ví dụ đơn giản, mô hình nhanh hoặc thử nghiệm.

Nếu bạn đổi ý và quyết định sử dụng giàn giáo sau khi đã tạo ra các mô hình, bạn luôn có thể chạy

$rails generate scaffold <name> 

Nó sẽ tạo ra tất cả các file đã mất. Hoặc nếu bạn là ot hạnh phúc với việc sử dụng giàn giáo, bạn luôn có thể gỡ bỏ nó theo cách sau:

Tạo giàn giáo:

$rails generate scaffold Story 

Nếu bạn di cư tập tin của bạn, thực hiện một rollback:

$rake db:rollback 

Destroy hoặc hoàn tác giàn giáo: $ ray phá hủy giàn giáo Câu chuyện

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