Bagaimana cara mendaftar semua metode yang aksesnya dimiliki objek tertentu?
Saya memiliki @current_user
objek, yang ditentukan dalam pengontrol aplikasi:
def current_user
@current_user ||= User.find(session[:user_id]) if session[:user_id]
end
Dan ingin melihat metode apa yang tersedia untuk saya di file tampilan. Secara khusus, saya ingin melihat metode apa yang :has_many
disediakan oleh sebuah asosiasi. (Saya tahu apa yang :has_many
harus disediakan, tetapi ingin memeriksanya.)
ruby-on-rails
ruby
Beladau
sumber
sumber
@current_user
?Jawaban:
Berikut ini akan mencantumkan metode yang dimiliki kelas Pengguna yang tidak memiliki kelas Objek dasar ...
Perhatikan bahwa
methods
ini adalah metode untuk Kelas dan untuk instance Kelas.Berikut metode yang dimiliki kelas Pengguna saya yang tidak ada di kelas dasar ActiveRecord:
Perhatikan bahwa metode yang dibuat sebagai hasil dari (banyak) hubungan has_many yang ditentukan di kelas Pengguna tidak ada dalam hasil
methods
panggilan.Ditambahkan Perhatikan bahwa: has_many tidak menambahkan metode secara langsung. Sebagai gantinya, mesin ActiveRecord menggunakan Ruby
method_missing
danresponds_to
teknik untuk menangani pemanggilan metode dengan cepat. Akibatnya, metode tersebut tidak dicantumkan dalammethods
hasil metode.sumber
Modul # instance_methods
sumber
Atau hanya
User.methods(false)
mengembalikan hanya metode yang ditentukan dalam kelas itu.sumber
Anda dapat melakukan
Untuk daftar yang lebih baik
sumber
Bagaimana dengan salah satunya?
sumber
Misalkan Pengguna memiliki banyak Postingan:
sumber
Untuk menjelaskan jawaban @ clyfe. Anda bisa mendapatkan daftar metode instance Anda menggunakan kode berikut (dengan asumsi Anda memiliki Kelas Objek bernama "Parser"):
sumber
Jika Anda mencari daftar metode yang merespons dengan sebuah instance (dalam kasus Anda @current_user). Menurut metode dokumentasi ruby
Atau, Anda juga dapat memeriksa apakah suatu metode dapat dipanggil pada suatu objek atau tidak ?.
Jika Anda tidak menginginkan metode kelas induk, cukup kurangi metode kelas induk darinya.
sumber