Cấu hình sendGrid mail trong rails với active job

Cấu hình sendGrid mail trong rails với active job

1. Gửi mail trong rails sử dụng active job. Để gửi mail dưới background trong rails, bạn cần đăng ký một active job sử dụng 1 hàng đợi để thực thi. Mặc định Rails sẽ sử dụng ActionMailer::DeliveryJob với queue sẵn có để gửi mail: Notifier.welcome(User.first).deliver_later   Nhưng từ Rails 5.2 bạn có thể sử dụng active job của bạn và queue mong muốn để gửi mail. ...

joins, preload, include và eager_load với active record trong rails

joins, preload, include và eager_load với active record trong rails

Xét ví dụ: bảng zombies có quan hệ một nhiều với bảng weapons như sau:        1.Joins joins là câu lệnh join 2 bảng bình thường trong sql: Zombie.joins(:weapons) #return 6 rows #<ActiveRecord::Relation [ #<Zombie id: 1, name: "Ashley", graveyard: "Glen Haven Memorial Cemetery">, #<Zombie id: 2, name: "Bob", graveyard: "Chapel Hill Cemetery">, #<Zombie id: 3, name: "Katie", graveyard: "...

Cách render and return trong sub method của controller rails

Cách render and return trong sub method của controller rails

Mở đầu Khi code hoặc refactor code trong rails, bạn có thể tách code trong action trong controller thành nhiều method con. Nhưng khi tách ra thành các method con, bạn có thể phải xử lý render hoặc redirect_to ngay trong method con. Nếu ở cả method con và method cha đều có render hoặc redirect_to thì rails sẽ ném lỗi bị lặp render hoặc redirect_to cho bạn. Dưới đây là một số cách để xử lý được lỗi trên ...

Một số trick trong postgreSQL

Một số trick trong postgreSQL

Bài này dùng postgre trong Rails và sẽ được update liên tục. Duyệt array và query từng phần tử trong array Bài toán đặt ra là cho một array các ids: ids = [1, 2, 3, 100000, 4, 5] Bạn muốn duyệt từng phần tử trong ids, với mỗi phần tử sẽ query vào bảng User trong DB và trả về giá trị tương ứng, nếu ko có record tương ứng với id thì trả về nil. Ví dụ id =...

Một số chú ý khi dùng Time, DateTime trong rails

Một số chú ý khi dùng Time, DateTime trong rails

Giả sử project rails của bạn set timezone là 'Tokyo' (có múi giờ 9 so với UTC 0): # config/application.rb ... config.time_zone = 'Tokyo' ...   Gọi Time.now và DateTime.now sẽ không trả về cho bạn thời gian của Tokyo mà là thời gian UTC 0  # Giả sử thời gian ở Tokyo hiện tại là "2018-06-26 13:54:54 JST +09:00" Time.now # => => 2018-06-26 04:54:54 +0000 DateTime.now # => Tue, 26 Jun 2018 04:57:00 +0000...

Download private file trên S3 về browser trong rails

Download private file trên S3 về browser trong rails

Nếu file trên S3 được public thì chỉ cần trả về url của file cho user, khi user click vào url đó trên browser thì họ sẽ download được. Còn nếu file trên S3 là private và ta muốn download file thông qua API thì làm như sau: Download S3 file rồi lưu về file tạm(temporary file) trên server. Gửi nội dung file tạm về cho người dùng Xóa file tạm trên server(có thể xóa hoặc không nhưng nên xóa đi) Khi không cần xóa file tạm thì bạn chỉ cần làm như sau (ở đây mình d&ug...

Có nên gọi ActiveRecord::Rollback với rescue trong transaction rails?

Có nên gọi ActiveRecord::Rollback với rescue trong transaction rails?

Khi sử dụng transaction trong RoR, có lúc ta không cần phải gọi câu lệnh ActiveRecord::Rollback , cũng có lúc ta phải gọi nó. Xét ví dụ: self.transaction do first_operation begin second_operation call_other_function rescue Exception => e #deal with the error raise ActiveRecord::Rollback #force a rollback end end Nếu bỏ raise ActiveRecord::Rollback : Mọi thay đổi tới DB xảy ra ở second_operation và call_other_function đều được r...

Phân biệt biến có tiền tố @ và @@ trong ruby rails

Phân biệt biến có tiền tố @ và @@ trong ruby rails

1. Điều đầu tiên bạn cần biết. - Mọi thứ trong ruby đều là object: Kể cả việc khai báo class thì class vừa được khai báo cũng là một object. class Something end Khi khai báo class như trên nghĩa là bạn đã khai báo một object Something của lớp Class: Something = Class.new   - Khái niệm Class variable là biến của lớp (chính xác thì ruby không có khái niệm ...

Cách hoạt động của subject trong rspec trong ruby on rails

Cách hoạt động của subject trong rspec trong ruby on rails

Nếu các bạn đang học về unit test với rspec trong ruby on rails, chắc hẳn sẽ không xa lạ gì với hàm subject. Khi sử dụng subject, cần chú ý một số điều như sau: - subject sẽ không được gọi thực thi khi khai báo, mà chỉ được thực thi khi gọi tới nó (Xem ví dụ phía dưới để hiểu cụ thể) - hàm subject sẽ chỉ được thực thi một lần trong mỗi một block test (một example) - hàm subject sẽ được thực thi lại trong các block test khác nếu trong block test này có gọi tới subject....

Cách sử dụng exception hiệu qủa trong ruby on rails

Cách sử dụng exception hiệu qủa trong ruby on rails

    1. Khi nào nên xử lý exception. Nguyên tắc: Ngoại lệ không nên được dự đoán biết trước (Exceptions should not be expected) Một hàm tạo user cơ bản được viết như sau: def create @user = User.new params[:user] if @user.save redirect_to user_path(@user) else flash[:notice] = 'Unable to create user' render :action => :new end end Nhưng có người lại viết nó một cách ngắn gọn: def create @user = User.new p...