Article:
Dùng Fixtures để load dữ liệu từ file YAML, CSV vào database
957
id.cntt.tv/nhanva 1Updated over 4 years ago |
-YAML là định dạng mặc định và được ưa thích vì nó có khả năng mô tả cấu trúc dữ liệu rất ngắn gọn và con người có thể đọc. YAML có phần mở rộng là .yaml. Định dạng của file YAML fixture có nội dung giống như:
Steven:
id: 1
first_name: Ruby on Rails
last_name: http://www.rubyonrails.org
Patrick:
id: 2
first_name: Patrick
last_name: Lenz
-CSV là định dạng tuyệt vời cho dữ liệu được export từ database hay từ dữ liệu bảng tính. Nội dung của file CSV fixtures được chia thành 2 phần: header và dữ liệu. Header là dòng đầu tiên của file . Mỗi dòng còn lại tuơng ứng sẽ là 1 record.Dạng file CSV fixtures có nội dung:
id, first_name, last_name
1, Steven, Holzner
2, Patrick, Lenz
Bởi vì dữ liệu trước đó trong database test luôn được xóa trước khi mỗi mỗi test case và dữ liệu trong database lúc này được lấy từ fixtures. Do đó ta cần đặt dòng code fixtures :authors
class Admin::AuthorControllerTest < Test::Unit::TestCase
fixtures :authors
...
end
Ngoài khả năng chứa dữ liệu cho quá trình test, chúng ta có thể load dữ liệu trong quá trình migration bằng một ít thủ thuật.
Trước hết ta tạo folder data trong thư mục db/migrate/ rồi tạo file authors.csv trong thư mục vừa tạo và them nội dung vào file:
id, first_name, last_name
3, Christian, Hellsten
Tiếp theo tạo migration để load dữ liệu từ file fixture vào development database
ruby script/generate migration load_author_data
Và bước cuối cùng là viết một vài dòng code trong migration để lấy dữ liệu từ fixtures
require 'active_record/fixtures'
class LoadAuthorData < ActiveRecord::Migration
def self.up
directory = File.join(File.dirname(FILE), "data" )
Fixtures.create_fixtures(directory, "authors" )
end
def self.down
end
end
Quá trình đã hoàn tất. Khi chạy lệnh rake db:migrate dữ liệu tronh file sẽ đươc đưa vào trong database.
Rails
1