В методе set_stub вы делаете self.roles << "subscriber"
, что мало что делает. Он изменяет массив, возвращаемый ролями, но ничего больше.
Вам нужно позвонить self.role =
и сделать это перед сохранением, чтобы оно было сохранено.
def set_sub
self.roles = [ "subscriber" ]
end
Причина, по которой работают другие after_creates, заключается в том, что они работают с отношением, для которого определен метод <<
, а <<
для отношения мгновенно сохраняется.
Вероятно, лучше сделать все это, используя before_validation
и / или before_save
, и будьте осторожны, чтобы установить его, но не сохранять. Вы можете установить self.channel_ids = [ 1 ]
, что не приведет к немедленному сохранению, но будет сохранено при вызове save
на модели.