Saya baru memulai dengan aplikasi web Ruby on Rails pertama saya. Saya punya banyak model, tampilan, pengontrol, dan sebagainya yang berbeda.
Saya ingin menemukan tempat yang baik untuk tetap definisi konstan konstanta global, yang berlaku di seluruh aplikasi saya. Secara khusus, mereka berlaku baik dalam logika model saya, dan dalam keputusan yang diambil dalam pandangan saya. Saya tidak dapat menemukan tempat KERING untuk meletakkan definisi ini di mana mereka tersedia baik untuk semua model saya dan juga dalam semua pandangan saya.
Untuk mengambil contoh spesifik, saya ingin sebuah konstanta COLOURS = ['white', 'blue', 'black', 'red', 'green']
. Ini digunakan di semua tempat, baik dalam model maupun tampilan. Di mana saya dapat mendefinisikannya hanya di satu tempat sehingga dapat diakses?
Apa yang saya coba:
- Variabel kelas konstan dalam file model.rb yang paling sering dikaitkan dengan mereka, seperti
@@COLOURS = [...]
. Tapi saya tidak bisa menemukan cara yang waras untuk mendefinisikannya sehingga saya bisa menulis dalam pandangan sayaCard.COLOURS
daripada sesuatu yang suka kludgyCard.first.COLOURS
. - Metode pada model, sesuatu seperti
def colours ['white',...] end
- masalah yang sama. - Metode di application_helper.rb - inilah yang saya lakukan sejauh ini, tetapi pembantu hanya dapat diakses dalam tampilan, bukan dalam model
- Saya pikir saya mungkin telah mencoba sesuatu di application.rb atau environment.rb, tetapi itu sepertinya tidak benar (dan mereka juga tidak berfungsi)
Apakah tidak ada cara untuk mendefinisikan sesuatu yang dapat diakses baik dari model maupun dari tampilan? Maksud saya, saya tahu model dan tampilan harus terpisah, tetapi pasti di beberapa domain akan ada saatnya mereka perlu merujuk ke pengetahuan khusus domain yang sama?