Strong Parameters
Strong Parameters
Action Controller parameters bị cấm sử dụng với tính năng Mass Assignment (cho phép update 1 model) trong Active Model, vì vậy chúng ta phải quyết định những attributes nào được phép mass update. Parameters được mark là cần thiết. Khi tất cả các params yêu cầu được không được thỏa mãn thì kết quả sẽ trả về là 400 Bad Request.
1
2
3
4
5
6
7
8
9
10
|
# không sử dụng mass assignment
user = User . find ( 1 )
user . name = "Your name"
user . email = "youremail@email.com"
user . save
# Sử dụng mass assignment
user = User . find ( 1 )
user . update ( name = "Your name" , email = "youremail@email.com" )
|
Strong parameters ngăn chặn việc ta không kiểm soát được những giá trị trong params.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
class PeopleController < ActionController :: Base
def create
User . create ( params [ : person ] )
end
def update
user = User . find ( params [ : id ] )
user . update ! ( user_params )
end
private
def person_params
params . require ( : user ) . permit ( : name , : email )
end
end
|
Cách sử dụng
require(:user) bắt buộc trong params phải có key là user
permit(:name, :email) trong key user chỉ cho phép name và email
Nested Parameters
1
2
3
4
5
|
params . permit ( : name , { emails : [ ] } ,
friends : [ : name ,
{ family : [ : name ] , hobbies : [ ] } ] )
|
định nghĩa các params được phép thay đổi gồm name, emails, và friends attributes, trong đó emails là một mảng các giá trị vô hướng tương tự với hobbies.
Ví dụ khác
Khi bạn muốn sử dụng các attributes mà chúng chưa được sinh ra khi gọi mới:
1
2
3
4
|
params . fetch ( : blog , { } ) . permit ( : title , : author )
#nếu params[:blog] có thể sử dụng :title và :author, nếu không thì trả về {}
|
Bên ngoài phạm vi của Params
Các API Strong params được thiết kế chủ yếu trong các trường hợp thông thường. Không có nghĩa là nó có thể xử lý hết các params mà bạn cần sử dụng. Tuy nhiên có thể dễ dàng kết hợp API cho trường hợp này.
1
2
3
4
5
6
|
def product_params
params . require ( : product ) . permit ( : name ,
data : params [ : product ] [ : data ] . try ( : keys ) )
end
|
Mong bài viết này có ích cho bạn! Thân.
- Hệ thống chấm công từ xa qua vệ tinh SAttendance và hệ thống định vị STracking
- Hệ thống đánh giá đại lý, chi nhánh, cửa hàng SKPI ( hệ thống đánh giá thông minh trên smartphone và tablet)
- Hệ thống giới thiệu sản phẩm, dịch vụ thông minh SCatalog và SBrochure ( hệ thống catalog và brochre thông minh trên smartphone và tablet)
- Ứng dụng bán hàng trên smartphone, smart TV, mạng xã hội...
- SChat là lựa chọn tuyệt vời nhất để trò chuyện và chăm sóc khách hàng của bạn
- SSale Hệ thống quản lý phân phối, bán hàng, chăm sóc khách hàng tối ưu
- Ứng dụng quản lý vận tải trên smartphone
- Điều hành hãng xe công nghệ, ứng dụng đặt xe trên smartphone tương tự Uber, Grab,...
- Mua vé xe, đặt vé xe trên smartphone, smart TV
- Bán vé máy bay thông qua smartphone và tablet, smart TV
- Quản lý giao vận thông minh
- Giao vận, Logistic
DVMS chuyên:
- Tư vấn, xây dựng, chuyển giao công nghệ Blockchain, mạng xã hội,...
- Tư vấn ứng dụng cho smartphone và máy tính bảng, tư vấn ứng dụng vận tải thông minh, thực tế ảo, game mobile,...
- Tư vấn các hệ thống theo mô hình kinh tế chia sẻ như Uber, Grab, ứng dụng giúp việc,...
- Xây dựng các giải pháp quản lý vận tải, quản lý xe công vụ, quản lý xe doanh nghiệp, phần mềm và ứng dụng logistics, kho vận, vé xe điện tử,...
- Tư vấn và xây dựng mạng xã hội, tư vấn giải pháp CNTT cho doanh nghiệp, startup,...
Vì sao chọn DVMS?
- DVMS nắm vững nhiều công nghệ phần mềm, mạng và viễn thông. Như Payment gateway, SMS gateway, GIS, VOIP, iOS, Android, Blackberry, Windows Phone, cloud computing,…
- DVMS có kinh nghiệm triển khai các hệ thống trên các nền tảng điện toán đám mây nổi tiếng như Google, Amazon, Microsoft,…
- DVMS có kinh nghiệm thực tế tư vấn, xây dựng, triển khai, chuyển giao, gia công các giải pháp phần mềm cho khách hàng Việt Nam, USA, Singapore, Germany, France, các tập đoàn của nước ngoài tại Việt Nam,…
Quý khách xem Hồ sơ năng lực của DVMS tại đây >>
Quý khách gửi yêu cầu tư vấn và báo giá tại đây >>