Sto lavorando a un'applicazione RubyonRails/ActiveAdmin. La mia versione RoR è la 4.2.5 e la versione AA è 1.0.0. Ho un modello Message
come segue.Come aggiungere un attributo virtuale a un modello in Ruby on Rails?
class Message < ActiveRecord::Base
belongs_to :user
validates :user, :content, presence: true
def palindrome
# return true/false
end
end
Come vedete, io voglio avere un attributo di sola lettura palindrome
che dipende solo dalla content
del messaggio. Voglio che questo attributo sia trattato esattamente come un normale attributo. Per normale, intendo quando recupero i messaggi tramite rails console
o il formato di messaggi json
, voglio vedere un attributo palindrome
nell'elenco. Mi piacerebbe anche avere un filtro per messaggio da questo attributo.
Non so come potrei ottenere questo.
Beh, grazie. Ho due domande. Innanzitutto, non voglio che questo attributo sia scrivibile poiché dipende solo dal valore di un altro attributo. Secondo, cosa valuta 'self [: palindrome]'? – moorara
Se non è necessario scrivere il valore dell'attributo, non si utilizza il metodo setter e non è possibile aggiungerlo nella definizione del parametro forte. 'self [: palindrome]' ti darà il valore del palindromo di 'self' che è l'istanza del tuo oggetto modello. Questo è simile a 'model_instance.palindrome'. Spero che sia chiaro ora. Fammi sapere se hai altre domande. –
Sei sicuro che questo verrà visualizzato nell'elenco dei parametri? L'attributo virtuale –