- vừa được xem lúc

Tổng hợp gem thông dụng trong Rails - Phần 2: Faker và Friendly Id

0 0 84

Người đăng: Pham Anh Tai

Theo Viblo Asia

Ở phần này mình sẽ giới thiệu 2 gems rất quen thuộc với Ruby developers và hơn nữa, mình nghĩ đây cũng là những gem sẽ giúp ích cho các bạn newbies trong quá trình học Ruby on Rails

I. Gem Faker

1. Giới thiệu

Faker là một gem không hề xa lạ đối với các lập trình viên Ruby on Rails, và hầu như mọi dự án Rails có Unit test thì đều sử dụng gem này. Vậy nên có thể gọi đây là gem mà bạn cần phải biết nếu như bạn đang muốn học lập trình với Rails

2. Cài đặt

Tất nhiên rồi, để cài đặt thì phải "đăng ký giấy tờ" ở gemfile rồi sau đó chạy lệnh bundle install gem 'faker'

Lưu ý: Nếu như bạn gặp phải lỗi version như thế này uninitialized constant Faker::[some_class] thì bạn đổi dòng trên thành

gem 'faker', :git => 'https://github.com/faker-ruby/faker.git', :branch => 'master' cho chắc kèo nhé ?

3. Sử dụng

Thử mở rails console và chạy những lệnh này nhé

require 'faker' Faker::Name.name #=> "Leo Kilback" Faker::Internet.email #=> "_@.com" 

Dễ hiểu phải không nào ?

Một số cách dùng khác

Faker::Name.unique.name #=> Sẽ trả về giá trị name unique, không trùng với tất cả các name mà bạn fake trước đó

Trong trường hợp bạn đã sử dụng hết tất cả các name(unique) của gem thì nó sẽ không cho bạn tạo thêm nữa và trả về lỗi Faker::UniqueGenerator::RetryLimitExceeded. Lúc này, bạn cần một lệnh để clear những giá trị đã sử dụng để fake lại ?

Faker::Name.unique.clear # Clear hết tất cả giá trị name đã sử dụng

Ngoài ra, Faker cũng hỗ trợ để fake một số thứ khác như:

## Default ##
Faker::Address
Faker::Alphanumeric
Faker::Ancient
Faker::App
Faker::Appliance
Faker::Artist ......
## Games ##
Faker::Game
Faker::Games::ClashOfClans
Faker::Games::DnD
Faker::Games::Dota ......
## Sports ##
Faker::Sports::Basketball
Faker::Sports::Football ......

Các bạn tham khảo thêm nhé, thường thì mình chỉ sử dụng để fake một số thứ ở mục Default thôi, lúc viết bài này mình có test qua thì thấy fake được khá là rộng rãi

Tham khảo thêm ở đây nhé: https://github.com/faker-ruby/faker

II. Gem Friendly Id

1. Giới thiệu

Nếu bạn để ý URL của những trang web trên mạng thì sẽ thấy nó khá là khác biệt với URL trong project mà mình tự làm. Ví dụ URL của bạn thường có id http://localhost:3000/post/1 Nhưng URL trên mạng thì lại news.com/post/this-is-post-name/

Một URL như thế này được gọi là một friendly url. Nhìn vào url cũng có thể biết đc đại khái một số thông tin của trang đó thay vì chỉ là một id

2. Cài đặt

Đăng ký "giấy tờ" ở gemfile gem "friendly_id" rồi niệm thần chú bundle install

Thêm column slug vào bảng mà bạn muốn sử dụng friendly id sau đó chạy migrate để update DB.

VD bạn có table posts có column title. Trên URL bạn muốn hiển thị title thay vì id của post đó như thông thường. Cơ chế của gem này là convert title sang dạng this-is-title rồi lưu vào column slug. Mỗi khi hiển thị trên url thì lấy slug ra hiển thị ?

Tiếp theo, ở trong model Post bạn thêm vào những dòng sau

class Post < ActiveRecord::Base extend FriendlyId friendly_id :title, use: :slugged
end

Như vậy, bạn đã chỉ định lấy title làm slug rồi nhé

3. Sử dụng

Mỗi khi gọi Post ở bất kì nơi nào trong project, thay vì Post.find id ta đổi thành Post.friendly.find id

Ta thử tạo một post Post.create! title: "example post"

Ở trên URL ta dễ dàng truy cập đến post đó với đường dẫn http://localhost:3000/posts/example-post.

Tài liệu tham khảo: https://github.com/norman/friendly_id

Tổng kết

Hi vọng bài viết sẽ giúp ích cho các bạn trong quá trình tiếp cận và học Ruby on Rails. Cám ơn các bạn đã đọc bài ?️‍♀️?️‍♀️?️‍♀️

Bình luận

Bài viết tương tự

- vừa được xem lúc

Gem paper_trail

1. Introduce. . Gem paper_trail được dùng để tracking sự thay đổi của model object và chia thành các version khác nhau.

0 0 29

- vừa được xem lúc

How to drop a table in Ruby

Issue. Với những dự án mới hoặc những dự án nhỏ tự làm, hầu hết bạn sẽ phải thường xuyên thay đổi cấu trúc DB dẫn tới việc phải thực hiện các câu lệnh như rails db:drop db:create db:migrate khá nhiều lần.

0 0 17

- vừa được xem lúc

Một số tips giúp ứng dụng Ruby on Rails bảo mật hơn

Tổng quan. Các Web framework ra đời giúp cho các lập trình viên phát triển các ứng dụng web một cách nhanh chóng và tiện lợi.

0 0 80

- vừa được xem lúc

6 vòng lặp Ruby nâng cao

. Ruby là ngôn ngữ với nguyên tắc "tối ưu hóa cho nhà phát triển". Đó là một ngôn ngữ dễ đọc, dễ viết, tích hợp, mẫu và nguyên mẫu cùng với các lợi ích khác.

0 0 84

- vừa được xem lúc

Rails bundler

1. Introduce. . Một trong những command được sử dụng nhiều nhất khi làm việc với Rails có lẽ là bundle install =)).

0 0 29

- vừa được xem lúc

Tổng hợp gem thông dụng trong Rails - Phần 1: Kaminari và Paranoia

Giới thiệu. Mục đích là để làm một seri blogs tập hợp tất cả những gem gần gũi, thường gặp nhất trong các dự án Rails.

0 0 83