Tôi đang làm việc trên một ứng dụng Rails 4 và trong phương pháp đăng bài của tôi cho một api tôi muốn tìm hồ sơ dựa trên những gì người dùng đang cố gắng tạo và nếu nó không tồn tại tạo ra nó nếu nó cập nhật các tham số mà nó có. Tôi đã viết một số mã thực sự làm điều này nhưng phải mất một chút để thực thi. Có cách nào khác để làm điều tương tự chính xác với mã hoặc truy vấn có thể ít hơn không.Rails ActiveRecord Tạo hoặc Tìm
@picture = current_picture.posts.where(post_id: params[:id]).first_or_initialize
@picture.update_attributes(active: true, badge: parameters[:badge], identifier: parameters[:identifier])
render json: @picture
Cảm ơn bạn nhưng tôi nghĩ rằng phương pháp đó đã được khấu hao trong Rails 4, tôi đoán là không. Vì vậy, tôi cũng đang sử dụng 'current_picture.posts.where (active: true, post_id: params [: id]). Take!' ở đâu khác, nên viết khác đi? – ny95
Tôi đã cập nhật câu trả lời của mình. Theo tài liệu, bạn có thể tìm thấy bài viết đầu tiên của người dùng với 'post_id' bằng' params [: id] ', hoặc nếu không tạo bài viết của người dùng mới với thuộc tính' active' được đặt thành 'true':' current_picture.posts. create_with (active: true) .find_or_create_by (post_id: params [: post_id]) '. – zeantsoi
Cảm ơn nếu bài đăng tồn tại, nó sẽ đặt bài đăng hiện tại thành đúng không? – ny95