17
def update 
    @album = Album.find(params[:id]) 
    if @album.update_attributes(params[:album]) 
    redirect_to(:action=>'list') 
    else 
    render(:action=>'edit') 
    end  
end 

Hướng dẫn Rails 1.1.6 mà tôi đề cập sử dụng phương pháp update_attributes để cập nhật mô hình, như trong mã ví dụ từ bộ điều khiển của tôi được liệt kê ở trên. Nhìn vào tài liệu Rails tôi tự hỏi tại sao phương pháp update sẽ không được ưa thích, đặc biệt là vì nó được đặt tên như vậy một cách hợp lý.Phương thức Rails update_attributes có phải là lựa chọn tốt nhất để thực hiện cập nhật mô hình trong cơ sở dữ liệu không?

+1

Bài viết này về * [5 cách để đặt thuộc tính trong ActiveRecord] (http://www.davidverhasselt.com/2011/06/28/5-ways-to-set-attributes-in-activerecord/) * might lãi. – JJD

Trả lời

25

Cập nhật mất một tham số id và một tập hợp các thuộc tính hoạt động như update_attributes.

Vì vậy, đây (từ AWDWR 3rd edition)

Order.update(12, :name => "Barney", :email => "[email protected]") 

tương đương với

Order.find(12).update_attributes(:name => "Barney", :email => "[email protected]") 

Vì vậy, nếu tất cả các bạn muốn làm là cập nhật một dãy id được biết đến với một tập hợp các thuộc tính sau đó tôi muốn nói không có lý do gì để không sử dụng update - có vẻ như đó là lý do họ viết nó!

(Có cách nào bạn có thể nhận được hướng dẫn để nâng cấp từ 1.1.6 không? Đây là phiên bản cũ và không phải là một bản phát hành có tính phân giải trái đất đặc biệt khi nó hiện tại. 1.2.6 tốt hơn - phiên bản cuối cùng của 1 .xs, nếu tôi nhớ chính xác).

+1

Cảm ơn đoạn mã - điều đó có ý nghĩa. Không, nó không thể nâng cấp, thật không may. Đó là một loạt video lynda.com - nó thực sự là một giới thiệu tốt cho Rails cho tôi mặc dù tôi có lẽ sẽ cần phải đọc một văn bản cập nhật hơn sau khi tôi hoàn thành nó. Trước tiên, tôi cần phải hiểu bức tranh lớn, mà tôi đã có một thời gian khó khăn với sau khi đọc cuốn sách O'Reilly "Head First Rails" một vài tháng trở lại. –

0

Sử dụng phương pháp update_attributes chỉ giả sử bạn đã có đối tượng và bạn chỉ cần chuyển bộ thuộc tính. Và công việc đã xong!