Tôi sẽ đưa ra một ví dụ khác mà tôi đã sử dụng. Tôi có một phương thức user_params trả về các tham số cần thiết để lưu cho người dùng (đây là một dự án Rails)
def user_params
params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
)
end
Bạn có thể thấy tôi không trả lại bất cứ thứ gì nhưng ruby trả về đầu ra của dòng cuối cùng.
Sau đó, đôi khi, tôi cần thêm một thuộc tính mới có điều kiện. Vì vậy, tôi đã thay đổi nó thành một cái gì đó như thế này:
def user_params
u_params = params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
)
u_params[:time_zone] = address_timezone if u_params[:address_attributes]
u_params
end
Ở đây, chúng ta có thể sử dụng chạm để xóa biến cục bộ và xóa trả về:
def user_params
params.require(:user).permit(
:first_name,
:last_name,
:email,
:address_attributes
).tap do |u_params|
u_params[:time_zone] = address_timezone if u_params[:address_attributes]
end
end
User.new.tap &:foobar