2011-01-29 19 views
16

Nếu trong một file mô hình tôi chỉ có mã này:Làm cách nào tôi có thể đặt 'attr_accessible' để KHÔNG cho phép truy cập BẤT CỨ trường nào CHO mô hình sử dụng Ruby on Rails?

class Users < ActiveRecord::Base 
end 

điều này có nghĩa? Tất cả các thuộc tính liên quan đến mô hình có thể truy cập được hay không?

Làm thế nào tôi có thể thiết lập 'attr_accessible' để không cho phép truy cập vào bất kỳ của các trường cho mô hình đó?

+2

Bạn cũng hỏi "Tất cả các thuộc tính liên quan đến mô hình có thể truy cập hay không?" - theo mặc định tất cả các lĩnh vực có thể truy cập cho hàng loạt nhiệm vụ –

Trả lời

34

Chỉ cần thiết lập:

class Users < ActiveRecord::Base 
    attr_accessible #none 
end 

Giống như Pan Thomakos nói (attr_accessible là mảng các tham số có thể được hàng loạt ret Vì vậy, nếu bạn gửi trong không biểu tượng, sau đó không có thông số sẽ có thể truy cập

..

This ticket was useful

+0

Đây chắc chắn là cách tiếp cận đơn giản và tốt nhất. Ngược lại, bạn có thể đặt 'attr_protected: mỗi,: một,: of,: your,: attributes' – Andrew

+2

Đối với hoa tulip trong tương lai --- điều này có giá trị cho Rails 3.2 ... trong Rails 4, bạn sẽ xử lý điều này bằng cách sử dụng strong_parameters https : //github.com/rails/strong_parameters –

10

Theo mặc định, các thuộc tính đều là attr_accessible (có nghĩa là chúng có thể được đặt theo thứ tự khối lượng của tôi).

  • attr_accessible - chỉ danh sách thuộc tính này có thể được đặt theo phân bổ hàng loạt (danh sách trắng).
  • attr_protected - những thuộc tính này không thể được đặt theo phân bổ hàng loạt (danh sách đen).
  • attr_readonly - những thuộc tính này không thể được đặt trừ khi bản ghi được tạo.

Để vô hiệu hóa hàng loạt nhiệm vụ hoàn toàn, sử dụng một cái gì đó như thế này:

 
ActiveRecord::Base.send(:attr_accessible, nil) 

Lệnh này sẽ vô hiệu hóa hàng loạt nhiệm vụ cho tất cả các đối tượng ghi lại hoạt động, nhưng bạn có thể chỉ định một hoặc nhiều mô hình để thực hiện lệnh này nếu bạn muốn chuyển nhượng hàng loạt trong một số trường hợp nhưng không phải trong trường hợp khác.

+0

Nhưng làm thế nào tôi có thể " 'attr_protected' "tất cả các thuộc tính cho một mô hình cụ thể? – user502052

+0

Tôi cũng đã cập nhật bài đăng của mình với thông tin đó. –

Các vấn đề liên quan