Virtuelle Attribute in rails 4
Wie kann ich mit virtual Attribute(getter, setter) in rails 4, als "attr_accessible" entfernt.
Bin ich immer Problem, hier
def tags_list
@tags = self.tags.collect(&:name).join(', ')
end
Kann ich erreichen, oben beschriebenen Methode, aber nicht in der Lage zu erreichen setter unten, wenn Sie versuchen, zu aktualisieren/erstellen.
def tags_list=(tags)
@tags = tags
end
- Sind Sie immer attr_accessible und attr_accessor Durcheinander? attr_accessible gegangen ist - ersetzt werden durch die starken Parameter. Aber soweit ich weiß, attr_accessor bleibt.
- sorry, Seine attr_accessor :tags_list
- wenn Sie attr_accessor sollten Sie nicht brauchen, um zu definieren, eine getter-oder setter überhaupt. attr_accessor ist ein makro, das schafft sowohl für Sie.
- Ich bin neu in ruby on rails. Meine Frage ist, wie man virtuelle Attribute in rails 4.
- Dies sollte helfen, stackoverflow.com/questions/17135974/.... Ich denke, Sie sollten Sie nicht den Namen Ihrer Instanz-variable
@tags
Regel-Instanz-Attribute mit gleichen Namen als getter verwendet werden, die von aktiven Datensatz@tags_list
wäre die bessere Wahl. - Diese Arbeit sollte in Rails 4, sofern diese nicht
protected
Methoden. Dieattr_accessible
Methode ist veraltet, weil die überprüfung der parameter erfolgt nun die Steuerung.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Verwendung virtueller Attribute in Rails 4 so ziemlich das gleiche wie mit attr_accessible. Sie müssen nur fügen Sie Ihre virtuelle Attribut der zulässigen Parameter im controller (statt attr_accessible), dann fügen Sie die getter-und setter-Methoden wie gewohnt in Ihrem Modell.
your_virtual_attr=:something
separat die ganze Zeit. Jemand anderes bemerkt dies und hat eine Ahnung, wie es zu handhaben?Tag.new(tags_list: [1, 2])
nicht Feuer dietags_list=()
virtuelles Attribut.. ist das ein bug?before_action :your_model_params
? Optional können Sie specfiy: , nur: [:new, :erstellen] oderexlcude: , except: [:action1, :action2, etc.]
.