หน้าตาของ code ตรงนั้นส่วนใหญ่จะยึดตามแบบนี้
def create
@role = Role.new(params[:role])
if @role.save
flash[:notice] = 'Role was successfully created.'
redirect_to :action => 'list'
else
render :action => 'new'
end
end
ซึ่งดูแล้วก็รู้เรื่องดี, แต่สำหรับผมเวลาเขียน code ตรงส่วนนี้ทีไรมันรู้สึกขัดๆ
Obie Fernandez ก็คงรู้สึกแบบเดียวกัน
แต่เขาหาวิธีแก้ไขได้เนียนดี
โดยเขาเปลี่ยนวิธี save เป็นแบบนี้แทน
def create
case unit_of_work do
@role = Role.new(params[:role])
end
when Success
redirect_to :action => 'list'
when ValidationError
render :action => 'new'
end
end
เป็นการเอา block + case statement มา combine กันได้สวยดี
โดยตัว unit_of_work เป็น method ที่รับ block เข้าไป
1 comment:
เท่ห์ดีครับ
Post a Comment