where
phương thức trả về một ActiveRecord::Relation
và bản thân đối tượng này không đưa ra truy vấn cơ sở dữ liệu. Đó là nơi bạn sử dụng đối tượng này quan trọng. join
cũng như lười biếng tải truy vấn cơ sở dữ liệu bằng cách sử dụng bảng được liên kết, nhưng chỉ tải Home
bảng vào bộ nhớ dưới dạng User
được liên kết bảng không bắt buộc. Sau đó, bạn có merge
, cái gì merge
method does là một cách đơn giản để sử dụng một phạm vi được đặt tên trên một mô hình được kết hợp. Một cái gì đó giống như
class Home < ActiveRecord::Base
has_many :users
end
class User < ActiveRecord::Base
belongs_to :home
scope :available, ->{ where(available: true) }
end