+2

Phỏng vấn 18/09/2019 - anh LinhNT

1, Một User có quan hệ has_may through với Course. Làm sao để lấy ra được các User đã học hết các Course nhất định.

User.joins(:courses).where courses: { status: "finish", id: [1,2,3] }

2, RESTful là gì? Em hiểu RESTful như thế nào?

3, Giờ trong 1 controller users với action edit. Nếu anh muốn edit picture riêng, edit basic_profile riêng, và để không vi phạm RESTful thì em làm như thế nào?

gem 'wicked'

4, Logic trong model khi bị béo quá sẽ phải viết vào trong thư mục services. Vậy khi nào viết code trong Service, khi nào viết trong Lib?

5, Validations uniqueness: true có ý nghĩa gì?

6, Nếu 1 User có thể thuộc nhiều Company. Nếu cùng company, thì email của user phải là duy nhất. Nếu khác company, thì email của user có thể giống nhau. Em giải quyết vấn đề này như thế này?

validates :email, uniqueness: { scope: :company_id }

7, Phân quyền admin bằng gem CanCanCan. Với user có 3 vai trò: user, manager và admin . Admin có quyền CRUD tất cả bảng. User thì chỉ được xem các tính năng. Manager được sửa 1 số bảng nhưng không được sửa thằng User. Giải quyết vấn đề này như thế nào trong CanCanCan?

8, Mọi model đều có trường start_date và end_date. Giờ anh muốn viết 1 scope để dùng cho tất cả model dựa trên 2 trưowfng đấy thì xử lý như nào?

Em dùng module concerns để tạo ra scope. Sau đấy, include scope vào ActiveRecord::Base .

#at app/models/concerns/global_scopes.ruby
module GlobalScopes
  extend ActiveSupport::Concern
  included do
    scope :in_daterange, ->(start_date, end_date) {where(created_at: start_date.to_date.beginning_of_day..end_date.to_date.end_of_day)}
  end
end
#at config/initializers/activerecord.rb
ActiveRecord::Base.send(:include, GlobalScopes)

9, Scope khác class method ở đâu?

10, Class method khác instance method ở đâu?

11, Viết test case cho view login user?


All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí