Validacja formularzy

Dobra. To jeszcze raz. Jak odwołujesz się do params[:messages], a taki klucz nie istnieje, to zwraca Ci “nil”. Przekazujesz to do Messages.new. Stąd Twój “if” jest nie potrzebny bo Messages.new dostanie te same dane i bez if’a (dostanie albo nil, albo zawartość params[:messages]).

Co do each’a to musiałbyś wrzucić plik widoku gdzie wywala Ci błąd, ale na 100% jest to nie zależne od tego.
Flash Ci działa, ale pewnie jak robisz refresh.

Nie masz racji. Ta klasa nie dziedziczy po ActiveRecord::Base, ma własną metodę initialize:

def initialize(attributes = {}) attributes.each do |name, value| send("#{name}=", value) end end
więc jak widzisz jest duża różnica czy wyślesz nil czy nie przekażesz parametru.

A jednak nie na 100% :wink:

Aaa… no faktycznie. Mea Culpa. Zwracam honor. Rozpędziłem się w swoim założeniu (jak zobaczyłem “valid”) :wink:

W takim przypadku osobiście wywaliłbym tą logikę z kontrolera i zrobił np:

def initialize(attributes = nil) attributes.each { |name, value| send("#{name}=", value) } if attributes.is_a?(Hash) end

tak też działa @belike81. I tak jest nawe lepiej. Dzięki