Viết blog để thay đổi không khí, cũng như là một cách để lưu giữ kiến thức lâu hơn.
Nội dung bài viết bắt nguồn từ chính những thắc mắc của bản thân trong quá trình học nên chắc sẽ phù hợp hơn với những ai cũng đang mới học Rails như mình.
Có gì sai sót mọi người cùng góp ý và chia sẻ nha ^^
New, Build, Create
Đặc điểm chung :
Đều dùng để tạo mới object trong Rails.
Create method
Truyền data vào và Save luôn
VD:
def new
@book = Book.create(title: "RoR 5 超入門", author:"掌田津耶乃")
#title là RoR 5 超入門,author là 掌田津耶乃
end
New method, Build method
New method truyền data vào nhưng không save. Muốn tạo object thì cần kết hợp với cả save method nữa.
New và Build hoạt động gần giống nhau nhưng Build ít khi được dùng hơn.
Build gần như chỉ được dùng trong các trường hợp đặc biệt, ngoài ra hầu hết New được sử dụng
def new
@book = Book.new
end
Hoặc
def new
@book = Book.new(title: "羅生門", author:"芥川龍之介")
#title là RoR 5 超入門,author là 掌田津耶乃
end
Kết hợp với save method để lưu data
def new
@book = Book.new
end
Tại sao lại phải chia ra nhiều cách dùng như vậy ?
Tại sao lại phải dùng New trong khi có thể dùng Create ?
Khi ta tạo ra một biến instance và muốn thao tác với nó trong quá trình save thì phải dùng New, chứ không dùng Create được.
Vì nếu dùng Create thì nó sẽ save luôn mà không kịp thao tác gì cả,
VD: Dùng hàm if
def create
@user = User.new(user_params) #Tạo biến instance
if @user.save
redirect_to @user, notice: 'User created'
else
render :new #Nếu Save thất bại thì render :new
end
end
==> Tạo biến instance, nếu save thành công thì redirect_to @user, nếu save thất bại thì render :new
Tổng kết
Một bức ảnh thay cho tóm tắt bài viết. 🤗
Nguồn: viblo.asia