Ich arbeite an einer RubyonRails/ActiveAdmin-Anwendung. Meine RoR-Version ist 4.2.5 und AA-Version ist 1.0.0. Ich habe ein Modell Message
wie folgt.Wie fügt man einem Modell in Ruby on Rails ein virtuelles Attribut hinzu?
class Message < ActiveRecord::Base
belongs_to :user
validates :user, :content, presence: true
def palindrome
# return true/false
end
end
Wie Sie sehen, ich will einen schreibgeschützten haben palindrome
zuzuschreiben, die auf der content
der Nachricht hängt nur. Ich möchte, dass dieses Attribut genau wie ein normales Attribut behandelt wird. Normalerweise, ich meine, wenn ich Nachrichten über rails console
abrufen oder json
Format der Nachrichten anfordern, möchte ich ein palindrome
Attribut in der Liste sehen. Ich möchte auch einen Filter für Nachrichten durch dieses Attribut haben.
Ich bin nicht sicher, wie ich das erreichen könnte.
Nun, Danke. Ich habe zwei Fragen. Erstens möchte ich nicht, dass dieses Attribut beschreibbar ist, da es nur vom Wert eines anderen Attributs abhängt. Zweitens, was bewertet "self [: palindrome]"? – moorara
Wenn Sie den Attributwert nicht schreiben müssen, dann verwenden Sie nicht die Setter-Methode und die Whitelisting in Ihrer Definition für starke Parameter. 'self [: palindrome]' gibt Ihnen den Wert des Palindroms von 'self', das die Instanz Ihres Modellobjekts ist. Dies ist ähnlich wie "model_instance.palindrome". Hoffe es ist jetzt klar. Lass es mich wissen, wenn du andere Fragen hast. –
Sind Sie sicher, dass dies in der Liste angezeigt wird? –