2011-01-30 32 views

Trả lời

85

Hãy thử XXX.find_or_initialize_by_uuid(XXXX)

+0

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

11

Kể từ Rails 4 này là XXX.find_or_initialize_by(uuid: XXXX)

2

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 
Các vấn đề liên quan