Вот правильный синтаксис, который вы искали:
В представлении (recipes / _form.html.erb ...)
select_tag 'duration[hours]'
select_tag 'duration[minutes]'
В модели (recipe.rb ...)
def duration=(d)
write_attribute(:duration, "#{d[:hours]}:#{d[:minutes]}:00")
end
Для полноты, переопределить геттер
def duration
read_attribute(:duration)
end
Вы также можете использовать:
self[:duration] = "#{d[:hours]}:#{d[:minutes]}:00"
self[:duration]
Но НЕ:
self.duration = "#{d[:hours]}:#{d[:minutes]}:00"
self.duration
Прохождение self.name вызовет функции получения или установки (которые вы пытаетесь переопределить)