2009-10-09 20 views

cevap

45

Sen attr_readonly kullanmak istiyorum: salt okunur olarak listelenmiş

Nitelikler yeni bir kayıt oluşturmak için kullanılacak ancak güncelleme işlemleri bu alanları göz ardı eder.

class Customer < ActiveRecord::Base 
    attr_readonly :your_field_name 
end 
+0

Bu, sorunuzun doğru cevabıdır, ancak asıl sorununun "doğru" çözümü biraz farklıdır ... diğer soru hakkındaki yoruma bakın. – averell

+0

Aksi takdirde cevaba +1. – averell

2

ve bu alan yerleştirme sırasında, her zaman ve tanımı "doğru" (gerçekte yani doğru bir temsili) tarafından?

Bu alana ilk girdiğinizde (ve yalnızca şemada: sadece) bir kullanıcı hata yapamaz mı?

+1

Aslında kullanıcı hiç girmiyor, kontrolör tarafından ayarlanmış. Önlemek istediğim, birinin değiştirilen bir posta isteği kullanarak değiştirmesidir. – fresskoma

+8

Bu durumda, "salt okunur" alanlarla uğraşmak istemezsiniz. Yapmak istediğiniz şey, alanın toplu güncellemeler tarafından değiştirilmesini önlemek için modelinizde 'attr_protected' ifadesini kullanmaktır. Daha da iyisi: Kitle güncellemeleri için yalnızca seçili alanları yapmak için 'attr_accessible' kullanın. – averell

+2

Buraya borulamak için: Bence, bu alanın değiştirilmesi, veri bütünlüğünüzü bozarsa, attr_readonly'nin uygun kullanım durumu. Bir alanım var: valid_at, ve bu alanın değişmesi hiçbir zaman gerçekleşmemeli, çünkü bir şey çekirdek algoritmalarla çok yanlış olduğu anlamına gelir. Eğer bu olursa, hepsi güvertede. Tüm veriler kötü olabilir. Bu yüzden, onu asla değiştirmemeliydim ve başka bir koddaki bir hata tarafından değiştirilmek yerine ağır bir şekilde korunmak isterim. Şayet hiç değiştirilmeye çalışılırsa, çok yüksek sesle patlatmak istiyorum. – Houen

İlgili konular