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...

Cách nhúng thư viện ngoài vào maven project trong java

Cách nhúng thư viện ngoài vào maven project trong java

Ví dụ mình có một thư viện tên là pdfreactor.jar Có 2 cách phổ biến để có thể include thư viện đó vào, đó là 1. Cài đặt thư viện đó vào repository trên máy bạn Cách này có hạn chế là mỗi khi chạy project trên một máy mới thì bạn lại phải cài đặt lại thư viện đó vào. Cách làm như sau: Đầu tiên bạn cần cài đặt mvn để có thể biên dịch thư viện ngoài. Sau khi cài đặt mvn thì bạn ...

Phân biệt build và new trong rails

Phân biệt build và new trong rails

build là phương thức của collection (dùng với bảng quan hệ) Khi dùng build và new với collection thì có một chút khác biệt: Ví dụ ta xét có quan hệ firm has many clients   1. Khác nhau giữa Client.new và firm.clients.new - Client.new sẽ không khởi tạo firm_id - firm.clients.new (hoặc firm.clients.build) sẽ khởi tạo firm_id henrym:~/testapp$ rails c Loading development environment (Rails 3.0.4) r:001 > (some_firm = Firm.new).save # Create and save a new Firm #=> true r:002 > Client.new ...

Phân biệt destroy và delete trong active record rails

Phân biệt destroy và delete trong active record rails

Khi thao tác với active record trong rails, các bạn có thể sử dụng destroy hoặc delete để xóa một đối tượng nào đó. Nhưng destroy sẽ gọi một mớ các tiến trình validate, gọi callback, ... còn delete chỉ đơn thuần gọi một câu lệnh sql xóa dữ liệu trong DB mà thôi. Sau đây mình xin giải thích cụ thể: Xét ví dụ có Post có nhiều Comments và Comment thuộc về một Post. #model Post class Post < ApplicationRecord has_many :comments, dependent: destroy before_destroy :log_before_destroy after...

Khi nào thì associations được lưu trong rails

Khi nào thì associations được lưu trong rails

    Ví dụ mình có một model User và 1 user có nhiều Reviews (User has_many Reviews). User có thuộc tính bắt buộc là user_name, và Review có thuộc tính bắt buộc là title. 1. Đối với User khởi tạo mới (chưa được lưu vào DB). Đúng cho cả các quan hệ belongs_to, has_many, has_one, has_many_and_belongs_to Dùng toán tử << (giống với push array) sẽ nối thêm vào mảng những phần tử cần thêm. Đoạn code sau sẽ trả về một collection:...

length, size và count trong Active Record rails

length, size và count trong Active Record rails

Trong ruby, phương thức length và size đều như nhau và đều đếm số phần tử có trong array hoặc hash. array = [3, 4, 5] puts "array length: #{array.length}" puts "array size: " + array.size.to_s hash = { a: 3, b: 4, c: 5, d:6 } puts "hash length: " + hash.length.to_s puts "hash size: #{hash.size} " Đoạn code trên sẽ cho ra kết quả:  array length: 3 array size: 3 hash length: 4 hash size: 4   Trong ActiveRecord, khi đếm số phần tử của một dữ liệu quan hệ thì có thêm phương thức count nhưng 3 ph...

Cuộn selected value lên đỉnh

Cuộn selected value lên đỉnh

    Ví dụ khi chọn dropdown một thẻ select ta được như sau:   Giá trị 18時 đang được đặt ở giữa thanh dropdown, ta muốn di chuyển giá trị 18時 lên đỉnh của thanh cuộn thì viết một đoạn code js như sau:   var $dropdown = $(dropdownElement); var selectedIndex = $dropdown.find('.selected').data(liTagIndex); var liHeight = $dropdown.find('li').first().outerHeight(); $dropdown.scrollTop(selectedIndex*liHeight);   ...