2017-02-11 17 views

Trả lời

14

Về cơ bản:

Foo.where(attributes).first_or_create 

là giống như:

Foo.find_or_create_by(attributes) 

#first_or_create đôi khi bị hiểu lầm như mọi người mong đợi nó để tìm kiếm theo các thuộc tính nhất định, nhưng đó không phải là trường hợp. Aka

Foo.first_or_create(attributes) 

Sẽ không tìm kiếm foo thỏa mãn attributes. Nó sẽ lấy foo đầu tiên nếu có. Sẽ hữu ích nếu điều kiện tìm kiếm là tập hợp con của những người được sử dụng để tạo. Aka

Foo.where(something: value).first_or_create(attributes) 

Sẽ tìm đầu tiên foo nơi something: value. Nếu không có mặt, nó sẽ sử dụng attributes để tạo ra nó.

Các vấn đề liên quan