Io corro Rails 4.di accesso specifiche per ogni modello costanti in una vista Rails
Ho un modello chiamato Challenge
, e nel mio database sto memorizzare il status
di ogni sfida in termini di 0-4.
Ma 0-4 non è molto semantica così voglio definire alcune variabili (Sto assumendo a costanti) in modo che in qualsiasi controller o visualizzare posso accedere al numero chiamando il costante:
# Challenge.rb
class Challenge < ActiveRecord::Base
SUGGESTED = 0
APPROVED = 1
OPEN = 2
VOTING = 3
CLOSED = 4
end
voglio accedere a questi a mio avviso:
# challenge/_details.html.erb
<% if @challenge.status == CLOSED %>
Challenge is closed, broheim!
<% end %>
Ma la mia vista non vuole rendere.
uninitialized constant ActionView::CompiledTemplates::CLOSED
Qual è il modo migliore per impostare le variabili di stato in modo che possano essere accessibili ovunque ne ho bisogno? (Vale a dire, ovunque la variabile @challenge
presente)
vi consiglio di utilizzare un hash come una costante in questo caso. Perché? Perché ridurrà il numero di costanti differenti del tuo modello. Qualcosa come: 'STATUS = {suggerito: 0, approvato: 1, aperto: 2, ecc: ..}' e accedervi come 'Sfida :: STATUSES.approved' – MrYoshiji