2011-03-11 15 views
16

Sadece kütle atamasının ne olduğu ve nasıl kodlanacağını net olarak görmek istiyorum. kitle atama bir karma kullanarak birçok alanların ataması, yani böyle ..Raylar kütle ataması tanımı ve attr_accessible kullanımı

@user = User.new(params[:user]) 

Ve attr_accessible kullanmak Bunu önlemek için mi böyle:

attr_accessible :name, :email 

Yani böyle bir saha: admin kitle atamasına eklenemedi?

Ama biz böyle bir şey tarafından kodunda değişiklik yapabilirsiniz: Yani biz attr_accessible sonra her şey kitle atama için erişilebilir yoksa doğrudur

@user.admin = true 

? ": Isim attr_accessible" tüm diğer alanlar şimdi kitle atama için değil erişilebileceği anlamına gelir

Ve nihayet zor nokta ...

neye hatta bir kez attr_accessible doğru mu?

cevap

11

Tüm varsayımlarınız doğru. Attr_accessible olmadan, tüm alanlar toplu atamaya açıktır. Attr_accessible kullanmaya başlarsanız, yalnızca belirttiğiniz alanlar toplu atamaya açıktır.

5

Srdjan tarafından belirtildiği gibi, tüm varsayımlarınız doğrudur. Sadece bildiğiniz gibi, attr_accessible'ın tersi olan attr_protected yöntemi de vardır. Kitle atanan olmaktan yönetici ancak tüm diğer alanları sağlayacaktır: Başka bir deyişle

attr_protected :admin 

yılında

önleyecektir.

2

Srdjan'ın cevabı, config/application.rb numaranızda öğesinin false olarak ayarlandığını varsayarak doğrudur. o true ayarlanırsa

, attr_accessible veya attr_protected kullanılmadığı sürece tüm özellikler varsayılan tarafından kitlesel görevinden korunacaktır.