Câu hỏi phỏng vấn Ruby on Rails Developer

157 Các câu hỏi phỏng vấn Ruby on Rails Developer được chia sẻ bởi các ứng viên

Khám phá cách thành công trong cuộc phỏng vấn xin việc làm Ruby on Rails qua những bí quyết và kinh nghiệm hữu ích trong bài viết này.

Câu hỏi phỏng vấn chung 

Dưới đây là bốn câu hỏi phỏng vấn chung mà bạn có thể gặp khi xin việc về Ruby on Rails cùng với gợi ý cách trả lời:

Câu 1: "Bạn có kinh nghiệm làm việc với Ruby on Rails bao lâu và bạn đã làm những dự án nào trước đây?"

Cách trả lời: Trả lời một cách ngắn gọn về thời gian kinh nghiệm của bạn và những dự án quan trọng bạn đã tham gia. Hãy thêm một số chi tiết về vai trò của bạn trong những dự án đó và những công nghệ hoặc tính năng cụ thể bạn đã làm việc.

Câu 2: "Ruby on Rails có điểm mạnh gì và tại sao bạn chọn sử dụng nó?"

Cách trả lời: Liệt kê một số điểm mạnh của Ruby on Rails như tốc độ phát triển nhanh, sự mở và cộng đồng hỗ trợ mạnh mẽ. Sau đó, giải thích tại sao bạn chọn sử dụng nó trong dự án của mình và làm thế nào nó hỗ trợ mục tiêu công việc của bạn.

Câu 3: "Làm thế nào để bạn xử lý vấn đề bảo mật trong ứng dụng Ruby on Rails của bạn?"

Cách trả lời: Trình bày về các biện pháp bảo mật phổ biến mà bạn đã sử dụng trong ứng dụng của mình như xác thực người dùng, bảo vệ khỏi tấn công SQL injection và cross-site scripting (XSS), cùng với việc cập nhật thường xuyên các phiên bản Rails và gem.

Câu 4: "Bạn đã từng gặp vấn đề nào khi làm việc với Ruby on Rails và làm thế nào bạn đã giải quyết chúng?"

Cách trả lời: Nêu rõ một trường hợp cụ thể mà bạn đã gặp vấn đề khi làm việc với Ruby on Rails và giải thích cách bạn đã tiếp cận vấn đề đó. Chia sẻ cách bạn sử dụng tài liệu, cộng đồng, hoặc nguồn tài nguyên khác để tìm giải pháp và áp dụng nó thành công. Điều này cho thấy khả năng tự giải quyết và sự chuyên nghiệp của bạn.

Lưu ý rằng cách trả lời có thể thay đổi tùy theo kinh nghiệm và dự án của bạn, vì vậy hãy chắc chắn rằng bạn có thể đưa ra các ví dụ cụ thể và minh chứng để minh họa khả năng của mình trong việc làm việc với Ruby on Rails.

Câu hỏi phỏng vấn về thông tin cá nhân 

Dưới đây là ba câu hỏi phỏng vấn thường gặp về thông tin cá nhân và gợi ý cách trả lời:

Câu 1: Hãy tự giới thiệu một chút về bản thân bạn.

Cách trả lời: Bạn có thể bắt đầu bằng tên, quê quán, và sau đó nhấn mạnh các thành tựu hoặc kinh nghiệm quan trọng trong cuộc đời hoặc sự nghiệp của bạn. Ví dụ: "Tôi là [Tên], đến từ [Quê quán]. Tôi đã có [số năm] kinh nghiệm làm việc trong lĩnh vực [lĩnh vực công việc] và từng đảm nhận các vị trí như [vị trí công việc]."

Câu 2: Hãy cho chúng tôi biết về một thách thức lớn bạn đã đối mặt trong quá khứ và cách bạn đã xử lý nó.

Cách trả lời: Hãy chia sẻ một ví dụ cụ thể về một tình huống khó khăn bạn đã trải qua, cách bạn đã phân tích vấn đề, và các bước bạn đã thực hiện để giải quyết nó. Làm như vậy sẽ thể hiện khả năng xử lý áp lực và khả năng giải quyết vấn đề của bạn.

Câu 3: Bạn có những kỹ năng và phẩm chất gì mà bạn cho rằng sẽ làm bạn thành công trong vị trí công việc này?

Cách trả lời: Hãy liệt kê một số kỹ năng và phẩm chất mà bạn có, và sau đó kết nối chúng với vị trí công việc cụ thể mà bạn đang phỏng vấn. Ví dụ: "Tôi có kỹ năng tốt về quản lý thời gian và làm việc độc lập, điều này giúp tôi có khả năng hoàn thành công việc một cách hiệu quả và đảm bảo tiến độ. Tôi cũng rất tập trung vào chi tiết, điều này giúp tôi đảm bảo chất lượng công việc luôn đạt được tiêu chuẩn cao nhất."

Câu hỏi phỏng vấn về chuyên môn

Dưới đây là 4 câu hỏi phỏng vấn về chuyên môn của Ruby on Rails cùng với gợi ý cách trả lời:

Câu 1: Bạn có thể giải thích cách hoạt động của MVC trong Ruby on Rails không?

Trả lời gợi ý:

MVC (Model-View-Controller) là một kiến trúc phân lớp thường được sử dụng trong Ruby on Rails để tách biệt logic ứng dụng thành ba phần chính:

  • Model: Đây là phần chịu trách nhiệm quản lý dữ liệu của ứng dụng. Models thường đại diện cho các bảng trong cơ sở dữ liệu và xác định cách truy cập và tương tác với dữ liệu.
  • View: View chịu trách nhiệm hiển thị thông tin cho người dùng. Nó làm việc với dữ liệu được cung cấp bởi Model để tạo giao diện người dùng.
  • Controller: Controller là cầu nối giữa Model và View. Nó điều hướng các yêu cầu từ người dùng đến Model để lấy và cập nhật dữ liệu, sau đó trả về kết quả cho View để hiển thị. Controller cũng thực hiện xử lý logic ứng dụng."

Câu 2: Ruby on Rails sử dụng gem là gì và tại sao chúng quan trọng?

Trả lời gợi ý:

Trong Ruby on Rails, gem là một gói chứa mã nguồn tái sử dụng hoặc thư viện. Chúng quan trọng vì chúng giúp cung cấp các chức năng bổ sung và mở rộng cho ứng dụng một cách dễ dàng. RubyGems là trình quản lý gem mặc định trong Rails, cho phép bạn cài đặt, quản lý, và sử dụng các gem khác nhau. Sử dụng gem, bạn có thể thêm các tính năng như xác thực người dùng, xử lý hình ảnh, tích hợp với API bên ngoài, và nhiều chức năng khác mà không cần phải viết mã từ đầu, giúp tiết kiệm thời gian phát triển.

Câu 3: Làm thế nào để tối ưu hóa hiệu suất của một ứng dụng Ruby on Rails?

Trả lời gợi ý:

  • Để tối ưu hóa hiệu suất của một ứng dụng Ruby on Rails, có một số điểm quan trọng cần xem xét:
  • Caching: Sử dụng caching để lưu trữ kết quả tính toán hoặc dữ liệu thường xuyên truy cập để giảm tải cho cơ sở dữ liệu và tăng tốc độ phản hồi.
  • Database Optimization: Tối ưu hóa cơ sở dữ liệu bằng cách sử dụng chỉ mục, tối ưu hóa truy vấn SQL, và dùng công cụ hỗ trợ như ActiveRecord để làm việc với dữ liệu một cách hiệu quả.
  • Sử dụng Web Server và Application Server hiệu quả: Sử dụng các web server như Nginx hoặc Apache để phân phối tải và application server như Puma hoặc Unicorn để xử lý các yêu cầu của người dùng một cách hiệu quả.
  • Scaling: Khi ứng dụng trở nên phức tạp và có nhiều người dùng, xem xét sử dụng các giải pháp như load balancing và phân chia dịch vụ để tăng khả năng mở rộng.

Câu 4: Làm thế nào để xử lý bảo mật trong Ruby on Rails?

Trả lời gợi ý:

  • Bảo mật là một yếu tố quan trọng trong phát triển ứng dụng Ruby on Rails. Dưới đây là một số biện pháp quan trọng:
  • Xác thực và ủy quyền: Sử dụng các gem như Devise hoặc OmniAuth để quản lý xác thực người dùng và kiểm soát quyền truy cập.
  • Bảo vệ chống tấn công CSRF và XSS: Rails cung cấp bảo vệ mặc định chống tấn công Cross-Site Request Forgery (CSRF) và Cross-Site Scripting (XSS). Hãy đảm bảo rằng chúng đã được kích hoạt và sử dụng chúng đúng cách.
  • Bảo mật cơ sở dữ liệu: Sử dụng prepared statements hoặc Active Record để tránh tấn công SQL injection.
  • Bảo mật tài liệu tải lên: Kiểm tra và xác thực tài liệu tải lên từ người dùng để đảm bảo rằng chúng không chứa mã độc hại.
  • Quản lý biến môi trường: Đảm bảo rằng các biến môi trường như API keys và credentials được quản lý một cách an toàn."

Kinh nghiệm “đậu” phỏng vấn vị trí Ruby on Rails

Để đậu phỏng vấn vị trí Ruby on Rails, bạn cần hiểu sâu về ngôn ngữ Ruby và framework Rails, cũng như có khả năng giải quyết các vấn đề phát sinh trong quá trình phát triển ứng dụng web. Dưới đây là một số kinh nghiệm giúp bạn nâng cao khả năng "đậu" phỏng vấn Ruby on Rails:

  • Hiểu rõ Ruby on Rails: Học cơ bản về Ruby và Rails framework, bao gồm cách hoạt động của MVC (Model-View-Controller) và ActiveRecord, routing, middleware, và gem management.
  • Xây dựng dự án thực tế: Tạo các ứng dụng web dựa trên Ruby on Rails để thực hành kỹ năng. Điều này giúp bạn hiểu rõ cách áp dụng kiến thức vào thực tế.
  • Hiểu rõ RESTful routing: Biết cách sử dụng RESTful routing để quản lý tài nguyên trong ứng dụng Rails.
  • Thành thạo ActiveRecord: ActiveRecord là một phần quan trọng của Rails, nắm vững cách làm việc với cơ sở dữ liệu bằng ActiveRecord, bao gồm việc tạo, đọc, cập nhật và xóa dữ liệu.
  • Thao tác với Gem: Hiểu cách sử dụng các gem phổ biến như Devise (đăng nhập và xác thực), CarrierWave (quản lý tệp đính kèm), và RSpec (kiểm thử) trong dự án của bạn.
  • Kiểm thử: Biết cách viết kiểm thử bằng RSpec hoặc Minitest để đảm bảo tính ổn định của ứng dụng.
  • Hiểu về bảo mật: Nắm vững các khái niệm bảo mật như SQL injection, Cross-Site Scripting (XSS), Cross-Site Request Forgery (CSRF), và cách bảo vệ ứng dụng khỏi các tấn công này.
  • Kiến thức về frontend: Hiểu cơ bản về HTML, CSS, JavaScript và jQuery, bởi vì Rails thường được sử dụng để phát triển ứng dụng web động.
  • Tìm hiểu về tối ưu hóa ứng dụng: Học cách tối ưu hóa hiệu suất ứng dụng Rails, bao gồm caching, indexing trong cơ sở dữ liệu, và sử dụng công cụ tối ưu hóa mã nguồn như New Relic.
  • Thực hành phỏng vấn: Tìm hiểu về các câu hỏi phỏng vấn phổ biến về Ruby on Rails và thực hành trả lời chúng. Điều này giúp bạn tự tin hơn khi phỏng vấn.
  • Dự án cá nhân: Nếu có thể, tham gia vào các dự án mã nguồn mở hoặc xây dựng ứng dụng cá nhân để thể hiện kỹ năng của bạn.
  • Thái độ và giao tiếp: Trong phỏng vấn, thể hiện tinh thần học hỏi, khả năng làm việc nhóm, và khả năng giao tiếp tốt.
  • Học từ phản hồi: Nếu bạn không đậu phỏng vấn, hãy hỏi người phỏng vấn về điểm yếu của bạn và cố gắng cải thiện chúng cho lần sau.

Nhớ rằng, việc đậu phỏng vấn không chỉ dựa vào kiến thức kỹ thuật, mà còn phụ thuộc vào cách bạn thể hiện bản thân và làm việc nhóm. Hãy tự tin, tập trung vào việc học và phát triển kỹ năng của bạn, và không bao giờ ngừng nỗ lực.

Câu hỏi phỏng vấn Ruby on Rails Developer & Cách trả lời

Dưới đây là 3 câu hỏi phỏng vấn Ruby on Rails Developer hàng đầu và cách trả lời chúng:

Câu hỏi #1: Framework là gì?

Framework là các đoạn code đã được viết sẵn, cấu thành nên một bộ khung và các thư viện lập trình được đóng gói

Câu hỏi #2: Ruby on rails là gì?

Ruby On rails là một Framework cho phép phát triển ứng dụng Web gồm 2 phần cơ bản:

Phần ngôn ngữ Ruby: "Ruby là một ngôn lập trình mã nguồn mở, linh hoạt, với một sự nổi bật về sự đơn giản dễ dùng và hữu ích. Nó có cú pháp "tao nhã" và tự nhiên dễ đọc và dễ dàng để viết".

Phần Framework Rails bao gồm nhiều thư viện liên kết.

Câu hỏi #3: Sự khác nhau giữa Class và Module?

  • Module nó giống như 1 cái thư viện, có thể sử dụng nơi nào cần nó, còn Class nó chỉ được sử dụng thông qua đối tượng thể hiện của nó.
  • Class có tính kế thừa còn Module thì không.
  • Ngược lại, Module có thể include vào bất cứ nơi nào trong khi Class thì chỉ có thể sử dụng thông qua object, ...

Câu hỏi phỏng vấn

Ruby on Rails Developer được hỏi... 03/11/2023

ORM là gì?

1 câu trả lời

ORM là từ viết tắt của Object Relational Mapping, nó giúp chuyển đổi dữ liệu giữa các hệ thống không tương thích trong lập trình hướng đối tượng. Nói cách khác, nó là cầu nối giữa DB và Rails, giúp truy xuất dữ liệu bằng các câu lệnh đơn giản mà Rails cung cấp

Ruby on Rails Developer được hỏi... 03/11/2023

Phân biệt preload, include, eager_load và joins

1 câu trả lời

Preload, include, eager_load và joins khác nhau khi truy vấn có quan hệ:

  • Preload: Truy vấn 2 câu SQL
  • Include: khi include không thôi thì giống preload, khi include có where với đk bảng liên kết thì sẽ là left joins
  • Eager_load: left joins
  • Joins: inner join include kết hợp với references sẽ giống như eager_load
Ruby on Rails Developer được hỏi... 03/11/2023

Khác nhau giữa .nil? .empty? .blank? và .present?

1 câu trả lời

  • .nil? là một hàm của Object, nên tất cả các object kế thừa từ Object mặc định đều có hàm nil?
  • chỉ có nil object trả về true khi gọi nil?
  • .empty? là function có sẵn của String, Array, Hash
  • Hiểu một cách đơn giản thì .empty? sẽ trả về true nếu:
  • string.length == 0
  • array.length == 0
  • hash.length == 0
  • blank? là một hàm rất thú vị của Rails, cũng như được sử dụng rất thường xuyên (cùng với .present?)
  • Theo như mô tả trong source code: một object được coi là blank nếu như nó false, empty hoặc là 1 chuỗi chỉ gồm các khoảng trắng.
Ruby on Rails Developer được hỏi... 03/11/2023

Lập trình hướng đối tượng là gì ?

1 câu trả lời

Lập trình hướng đối tượng (OOP) là một phương pháp lập trình mà mọi hoạt động đều thể hiện trên các Object.

Ruby on Rails Developer được hỏi... 03/11/2023

Interface và Abstract class khác nhau như thế nào?

1 câu trả lời

Abstract class: là một class cha cho tất cả các class có cùng bản chất... Hiểu đơn giản như một thằng con (child class) chỉ có thể là con của một thằng cha, có tính cách giống cha (abstract class) nó. 

Interface: là một chức năng mà bạn có thể thêm và bất kì class nào.

Ruby on Rails Developer được hỏi... 03/11/2023

Phân biệt delete và destroy

1 câu trả lời

  • Khi gọi delete một active record thì chỉ đơn thuần gọi câu lệnh sql trong DB, mọi thứ như là các hàm before_destroy, after_destroy và gọi callback destroy các dependent sẽ không được thực thi.
  • Khi gọi destroy thì các hàm before, after_destroy và callback ở các dependent sẽ được thực thi theo thứ tự sau:
  • Gọi hàm before_destroy nếu được khai báo
  • Xóa object
  • Nếu bạn xét "dependent: delete" thì các object liên kết tới object này gọi hàm delete và xóa chỉ bằng câu lệnh sql. Còn nếu bạn xét "dependent: destroy" thì các object liên kết tới object này sẽ lặp lại các bước từ gọi hàm before_destroy, xóa object,... với chính nó.
  • Gọi hàm after_destroy nếu được khai báo.
Ruby on Rails Developer được hỏi... 03/11/2023

Class là gì?

1 câu trả lời

  • Trong lập trình hướng đối tượng, Class (Lớp) là một chương trình-mã-khuôn mẫu có thể mở rộng được để tạo các đối tượng, cung cấp giá trị khởi tạo cho trạng thái và hiện thực của hàn vi.
  • Lập trình hướng đối tượng (tiếng Anh: Object-oriented programming, viết tắt: OOP) là một mẫu hình lập trình dựa trên khái niệm "công nghệ đối tượng", mà trong đó, đối tượng chứa đựng các dữ liệu, trên các trường, thường được gọi là các thuộc tính; và mã nguồn, được tổ chức thành các phương thức.
Ruby on Rails Developer được hỏi... 03/11/2023

Các loại index trong SQL

1 câu trả lời

  • Index là một cấu trúc dữ liệu đặc biệt dưới dạng bảng tra cứu mà Database Search Engine có thể sử dụng để giúp việc truy vấn dữ liệu trong database được thực hiện hiệu quả hơn.
  • Hiểu đơn giản, một chỉ mục là một con trỏ tới dữ liệu trong một bảng, giống như mục lục trong một cuốn sách để tra cứu đến các trang sách
  • Có hai loại index chính trong MySQL, đó là Clustered IndexNon-clustered Index
  • Mở rộng từ 2 loại trên Unique Index Primary Index Secondary Index
Ruby on Rails Developer được hỏi... 03/11/2023

Cách đánh index trong SQL

1 câu trả lời

MySQL cung cấp các kiểu đánh index đó là: B-Tree, Hash, R-Treebitmap index

B-Tree index

  • Dữ liệu index được tổ chức và lưu trữ theo dạng cây, tức là có gốc, nhánh và lá. Giá trị của các node được tổ chức tăng dần từ trái qua phải.
  • Khi truy vấn dữ liệu thì việc tìm kiếm trong B-Tree là một quá trình đệ quy, bắt đầu từ root node và tìm kiếm tới nhánh và lá, đến khi tìm được tất cả dữ liệu thỏa mãn với điều kiện truy vấn thì mới dùng lại.
  • B-Tree index được sử dụng trong các biểu thức so sánh dạng: =, >, >=, <, <=, BETWEEN và LIKE. B-Tree index thường được sử dụng cho những column trong bảng khi muốn tìm kiếm giá trị nằm trong một khoảng nào đó.

Hash index

  • Dữ liệu index được tổ chức theo dạng key - value được liên kết với nhau.
  • Khi hash index làm việc nó sẽ tự động tạo ra một giá trị hash của cột rồi xây dựng B-Tree theo giá trị hash đó. Giá trị này có thể trùng nhau, và khi đó node của B-Tree sẽ lưu trữ một danh sách liên kết các con trỏ trỏ đến dòng của bảng.
  • Hash index chỉ sử dụng trong các biểu thức toán tử là = và <>, không có phép tìm kiếm gần đúng, tìm kiếm trong một khoảng giá trị hay sắp xếp, không thể tối ưu hóa toán tử ORDER BY bằng việc sử dụng Hash index bởi vì nó không thể tìm kiếm được phần từ tiếp theo trong Order.

R-Tree index

  • MyISAM hỗ trợ các chỉ mục không gian, mà bạn có thể sử dụng với các loại một phần như GEOMETRY. Không giống như các chỉ mục B-Tree, các chỉ mục không gian không yêu cầu các mệnh đề WHERE của bạn hoạt động trên tiền tố ngoài cùng bên trái của chỉ mục.
Ruby on Rails Developer được hỏi... 03/11/2023

Lợi, hại của việc đánh index

1 câu trả lời

  • Mặc dù việc sử dụng các chỉ mục nhằm mục đích để nâng cao hiệu suất của Database nhưng đôi khi bạn nên tránh dùng chúng. Một nguyên tắc chung là tạo index cho tất cả mọi thứ được tham chiếu trong các phần WHERE, HAVING và ORDER BY của các truy vấn SQL.
  • Index cho việc tìm kiếm giá trị duy nhất
  • Index cho khóa ngoài để tối ưu hóa việc tìm kiếm
  • Index cho giá trị được sắp xếp xảy ra thường xuyên
  • Cần xem xét các điểm sau để quyết định có nên sử dụng chỉ mục hay không:
  • Các chỉ mục không nên được sử dụng trong các bảng nhỏ.
  • Bảng mà thường xuyên có các hoạt động update, insert.
  • Các chỉ mục không nên được sử dụng trên các cột mà chứa một số lượng lớn giá trị NULL.
  • Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi.
Ruby on Rails Developer được hỏi... 03/11/2023

Nếu sau quá trình test đã đảm bảo được các yêu cầu, tiêu chí nhưng khách hàng vẫn phàn nàn, bạn sẽ xử lý như thế nào?

1 câu trả lời

Trong trường hợp này, bạn không nên phản bác ngay, mà thay vào đó hãy hỏi xem khách hàng không hài lòng ở điểm nào, muốn thay đổi như thế nào,… Từ đó, phân tích về nhu cầu của khách. Nếu việc thay đổi không mất quá nhiều thời gian, bạn vẫn có thể hỗ trợ để khuyến khích họ quay lại lần sau.

Ruby on Rails Developer được hỏi... 03/11/2023

ActiveRecord là gì?

1 câu trả lời

ActiveRecord là 1 ruby gem đóng vai trò là ORM

Ruby on Rails Developer được hỏi... 03/11/2023

Action Cable là gì?

1 câu trả lời

Action Cable là phương thức để thực hiện lập trình web socket trong Rails

Ruby on Rails Developer được hỏi... 03/11/2023

ActiveJob là gì?

1 câu trả lời

ActiveJob là 1 Ruby gem phục vụ cho việc thiết lập các jobs chạy ngầm trong 1 Rails app

Ruby on Rails Developer được hỏi... 03/11/2023

Filter trong controller là gì?

1 câu trả lời

Filter là phương thức chạy trước, chạy sau hoặc chạy cùng với các action trong controller

Ruby on Rails Developer được hỏi... 03/11/2023

Strong Parameters là gì?

1 câu trả lời

Strong Parameters giống như 1 bộ lọc các giá trị được phép thay đổi trong params gửi lên

Ruby on Rails Developer được hỏi... 03/11/2023

Nested attributes dùng để làm gì?

1 câu trả lời

Nested attributes dùng để tạo thuộc tính của bản ghi này thông qua bản ghi khác.

Để dùng nó trong Rails thì model phải khai báo accepts_nested_attributes_for, trong view dùng fields_for và trong controller accept attribute như images_attributes: [:id, :url]

Ruby on Rails Developer được hỏi... 03/11/2023

Phân biệt find, find_by, find_by!, where

1 câu trả lời

  • find_by: thực hiện tìm tiếm với điều kiện nào đó, nếu tìm thấy, trả về 1 object, nếu không tìm thấy thì trả về nil.

  • find_by!: tương tự với find_by, tuy nhiên nếu không tìm thấy thì sẽ trả về Exception ActiveRecord::RecordNotFound

  • where: cũng thực hiện với tìm kiếm với điều kiện nào đó, nếu tìm thấy sẽ trả về một relation model, nếu không tìm thấy sẽ trả về realtion rỗng.

Ruby on Rails Developer được hỏi... 03/11/2023

Phân biệt take, limit, first, last

1 câu trả lời

Các hàm như find, find_by, take, first, last đều trae về các object model, nghĩa là chỉ cần gọi đến hàm đó, thì câu lệnh sql sẽ được thực thi ngay lập tức, k theo cơ chế Lazy Evaluation.

Ruby on Rails Developer được hỏi... 03/11/2023

Phân biệt update_attribute, update_attributes, update_column, update_columns, update, update!

1 câu trả lời

update(attribute_name: value)

  • Là một instance method
  • Cập nhật một hoặc nhiều thuộc tính của bản ghi
  • Có kiểm tra validations, chạy callbacks
  • Trả về True/False
  • Trường updated_at được cập nhật nếu thành công
  • update! raise exception nếu có lỗi xảy ra

user = User.find_by id: 1

user.update name: "Hanh", email: "hanh@gmail.com"

update(id, attributes)

  • Là một class method
  • Cập nhật thuộc tính của bản ghi với id truyền vào, có thể cập nhật nhiều bản ghi cùng lúc
  • Validations, callbacks được gọi khi cập nhật
  • Trả về bản ghi đó dù cập nhật thành công hay không
  • Trường updated_at được cập nhật nếu thành công

# Cập nhật một bản ghi

User.update(1, name: "Hanh", email: "hanh@gmail.com") #

Cập nhật nhiều bản ghi

* User.update([1,2], [{name: "Hanh", email: "hanh@gmail.com"}, {name: "Huong", email: "huong@gmail.com"}])

* ```

update_attribute(attribute_name, value)

  • Chỉ cập nhật một thuộc tính của bản ghi
  • Bỏ qua validations, vẫn chạy callbacks
  • Trả về True/False

Trường updated_at được cập nhật

  • update_attributes(attribute_name: value)
  • Giống với update(attribute_name: value) ở mục c phía trên
  • update_attributes! raise exception nếu cập nhật không thành công 

update_column(attribute_name, value)

  • Cập nhật trực tiếp một thuộc tính trong cơ sở dữ liệu
  • Validations, callbacks đều bị bỏ qua khi cập nhật
  • Trả về True/False
  • Trường updated_at không được cập nhật

```javascript

user = User.find_by id: 1

user.update_column :name, "Hanh"

update_columns(attribute_name: value)

  • Cập nhật trực tiếp một hoặc nhiều thuộc tính trong cơ sở dữ liệu
  • Bỏ qua cả validations và callbacks
  • Trả về True/False
  • Trường updated_at không được cập nhật
Đang xem 1 - 20 trong 157 câu hỏi phỏng vấn