Ruby Objects và Methods

Ruby là một ngôn ngữ hướng đối tượng. Mọi thứ trong Ruby đều là Object. Điều này có nghĩa là tất cả các lớp khác bao gồm Array, Fixnum và String đang kế thừa tất cả các phương thức từ Object


5 min read
Ruby Objects và Methods

Ruby là một ngôn ngữ hướng đối tượng. Mọi thứ trong Ruby đều là đối tượng. Điều này có nghĩa là tất cả các lớp khác bao gồm Array, Fixnum và String đang kế thừa tất cả các phương thức từ Object,  thậm chí bản thân class cũng là một object kế thừa từ class Class, chúng ta sẽ xem các phương thức được xác định trước giúp chúng ta lập trình như thế nào nhé.

Phương thức .first.last

Thay vì truy cập một mảng bằng cách nhớ vị trí, chúng ta có thể sử dụng .first để truy cập phần tử đầu tiên và .last để truy cập phần tử cuối cùng của mảng. Hình dưới in ra kết quả của giá trị ở vị trí đầu tiên và cuối cùng của mảng.

Đối với Model / ActiveRecord

id firstname lastname age gender
1 Andrew Hui 22 m
2 Christine Lee 31 f
3 Matthew Nguyen 22 m
User.first
=> #<User id: 1, firstname: "Andrew", lastname: "Hui", age: "22", gender:"m", created_at: "2019-04-15 09:04:31">

User.last
=> #<User id: 3, firstname: "Matthrew", lastname: "Nguyen", age: "22", gender:"m", created_at: "2019-04-15 09:04:32">

Phương thức .include?

Chúng ta thường sử dụng vòng lặp để kiểm tra xem một giá trị có trong mảng hay không, hãy dùng.include? cho việc đó.

Phương thức .to_s

.to_s là phương thức sẽ chuyển đổi bất kỳ đối tượng nào thành chuỗi. Nó thường được sử dụng khi bạn biến số nguyên thành chuỗi, + có thể được sử dụng để thêm hai số hoặc kết hợp hai chuỗi.

123.to_s + 456.to_s 
=> "123456"

Đối với Model / ActiveRecord

user = User.first

puts "This is #{user} information"
=> "This is #<User:0x007fefb2002428> information"

Phương thức .inspect

.inspect sẽ trả về một chuỗi mô tả các phần tử của mảng nằm trong cặp dấu [],bạn có thể kiểm tra định nghĩa trên APIDock

[ 1, 2, 3..4, 'five' ].inspect
=> "[1, 2, 3..4, \"five\"]"
Time.new.inspect 
=> "2008-03-08 19:43:39 +0900"

Đối với Model / ActiveRecord

user = User.first
puts "This is #{user.inspect} information"
=> This is #<User id: 1, email: "[email protected]", encrypted_password: "$2a$10$D57y73Q9HUXG9Hym3bLl8.MizOdTRxd6NQH6snHi4Q....", reset_password_token: nil, reset_password_sent_at: nil, remember_created_at: "2014-10-15 11:19:09", sign_in_count: 13, current_sign_in_at: "2014-10-21 20:10:18", last_sign_in_at: "2014-10-20 17:37:27", current_sign_in_ip: "127.0.0.1", last_sign_in_ip: "127.0.0.1", created_at: "2014-06-30 17:41:06", updated_at: "2014-10-21 20:10:18"> information"

Phương thức  .pluck

.plucklà một phương thức lấy các thuộc tính trong database kèm theo điều kiện. Các giá trị trả về sẽ là chuỗi (theo mặc định). Chúng ta xét bảng users dưới đây.

id firstname lastname age gender
1 Andrew Hui 22 m
2 Christine Lee 31 f
3 Matthew Nguyen 22 m

Để lấy danh sách firstname từ bảng users.

User.pluck(:firstname)
=> [‘Andrew’, ‘Christine’, Matthew’]

Để lấy danh sách firstname, lastname từ bảng users.

User.pluck(:lastname, :firstname)
=> [[‘Hui’, ‘Andrew’], [‘Lee’ ,‘Christine’], [‘Nguyen’, Matthew’]]

Chúng ta cũng có thể dùng kết hợp với SQL DISTINCT.

User.pluck(‘DISTINCT age’)
=> [‘22’, ‘31’]

Phương thức.gsub

.gsub có thể thay thế một từ trong chuỗi, dưới đây là một số cách dùng.

"Nothing will work unless you do".gsub('o', '0')
 => "N0thing will w0rk unless y0u d0"

Kết hợp sử dụng với Regex

"hello".gsub(/[aeiou]/, '*')                  #=> "h*ll*"
"hello".gsub(/([aeiou])/, '<\1>')             #=> "h<e>ll<o>"
"hello".gsub(/./) {|s| s.ord.to_s + ' '}      #=> "104 101 108 108 111 "
"hello".gsub(/(?<foo>[aeiou])/, '{\k<foo>}')  #=> "h{e}ll{o}"
'hello'.gsub(/[eo]/, 'e' => 3, 'o' => '*')    #=> "h3ll*"

Phương thức.all

.all là bí danh của find(:all), dùng để lấy tất cả hàng trong bảng của cơ sở dữ liệu.

id firstname lastname age gender
1 Andrew Hui 22 m
2 Christine Lee 31 f
3 Matthew Nguyen 22 m

Gía sử chúng ta muốn lấy tất cả thuộc tính trong bảng users.

User.all
=> [[‘1’, ‘Andrew’, ‘Hui’, ‘22’, ‘m’], [‘2’, ‘Christine’, ‘Lee’ , ‘31’, ‘f’], [‘3’, Matthew’, ‘Nguyen’, 22, ‘m’]].

Phương thức .joins

.joinslà một phương thức nối bảng trong database dựa trên khóa tham chiếu hoặc khóa ngoại.

Ví dụ: Ta có 2 bảng users và bảng comments

id firstname lastname age gender
1 Andrew Hui 22 m
2 Christine Lee 31 f
3 Matthew Nguyen 22 m

Bảng comments chứa khóa ngoại: user_id.

id title body user_id
1 Great! sample body 1 1
2 Love it! sample body 2 1
3 Never get it sample body 3 2

Để join commentsusers  thông qua khóa ngoại user_id: ta dùng câu lệnh dưới đây:

Comment.joins(:user)
=> [[‘Great!’, ‘sample body 1’, ‘1’, ‘1’, ‘Andrew’, ‘Hui’, ‘22’, ‘m’], [‘Love it!’, ‘sample body 2’, ‘1’, ‘2’, ‘Christine’, ‘Lee’ , ‘31’, ‘f’], [‘Great!’, ‘sample body 3’, ‘2’, ‘Christine’, ‘Lee’ , ‘31’, ‘f’]]

# Tương đương với câu lệnh SQL: SELECT * FROM Comments, Users WHERE Comments.user_id = Users.id

Tham khảo: https://apidock.com

Related Articles

RESTful: Phần 4 - API Rate Limiting
10 min read
RESTful: Phần 3 - API Caching
12 min read
The queue data structure
3 min read

GO TOP

🎉 You've successfully subscribed to itplusX!
OK
]