Tôi hiện đang sử dụng:Đường ray - tìm hoặc tạo - có tìm kiếm hoặc xây dựng không?
XXX.find_or_create_by_uuid(XXXX)
Có cách nào để tìm hoặc xây dựng?
Tôi hiện đang sử dụng:Đường ray - tìm hoặc tạo - có tìm kiếm hoặc xây dựng không?
XXX.find_or_create_by_uuid(XXXX)
Có cách nào để tìm hoặc xây dựng?
Hãy thử XXX.find_or_initialize_by_uuid(XXXX)
Kể từ Rails 4 này là XXX.find_or_initialize_by(uuid: XXXX)
Trong trường hợp bạn muốn làm của riêng (Rails 5) của bạn:
class ApplicationRecord < ActiveRecord::Base
def self.find_or_build_by hash
result = all.where(hash)
result.present? ? result : none.build(hash)
end
end
Lưu ý: Bạn không thể sử dụng một tiếng nổ '' điều hành với 'find_or_initialize_by' như bạn có thể với' find_or_create_by'. Điều này là do các bang được sử dụng để nâng cao một ngoại lệ nếu có vấn đề lưu các đối tượng, mà không áp dụng khi chỉ cần khởi tạo. –