Saya memiliki metode yang perlu mengulang melalui hash dan memeriksa apakah setiap kunci ada dalam tabel model, jika tidak maka akan menghapus kunci / nilai.
sebagai contoh
number_hash = { :one => "one", :two => "two" }
dan tabel Number hanya memiliki kolom: satu jadi: dua akan dihapus.
Bagaimana cara memeriksa apakah model memiliki atribut atau tidak?
ruby-on-rails
dMix
sumber
sumber
Hash#select
:number_hash.select { |key, value| Number.column_names.include? key }
number.has_attribute?
yang menerima Simbol atau Stringuser
, tetapi harus mencariuser_id
karena beberapa model mendelegasikan pengguna.Hash#has_key?
tidak digunakan lagi demiHash#key?
Number.attribute_method? 'one'
Jika Anda juga perlu memeriksa alias, Anda dapat menggunakan
Number.method_defined? attr_name
ataunumber.class.method_defined? attr_name
.Saya harus melakukan ini untuk objek Mongoid yang memiliki bidang alias.
sumber
ModelName.attribute_method? :attr_name
apa yang berhasil dalam contoh sayaDalam objek instance Anda, Anda bisa menggunakan juga
defined? instance.attribute
atauinstance.respond_to? :attribute
.Ini adalah solusi yang lebih umum untuk memeriksa atribut model atau metode apa pun juga.
sumber
instance.respond_to?(:attribute) == false ; instance.attribute ; instance.respond_to?(:attribute) == true