Добавление метода after_create в Rails Admin
Я использую Rails 4.1 и Rails Admin. У меня есть модель проекта со следующими полями: name: slug: project_number.
Когда я создаю новый проект в админке, я хочу, чтобы номер_проекта создавался автоматически с использованием идентификатора и слага. Как это:self.project_number = self.slug + '_' + self.id
Я пытался сделать это в контроллере проекта, используя метод after_create, теперь я понимаю, что rails_admin не попадает в мой контроллер. Кто-нибудь может указать мне правильное направление, как это сделать? Это будет пользовательское действие rails_admin?
1 ответ
Решение
Это потому, что вам нужно захватить after_create
в модели.
/models/project.rb
class Project < ActiveRecord::Base
after_create :generate_project_number
def generate_project_number
self.project_number = "#{slug}_#{id}"
end
end
Таким образом, когда вы создаете новый проект (форма в любом месте) project_number
будет сохранен как "slug_id"
[29] pry(main)> Project.create!(slug: 'hello_world')
=> #<Project id: 3, slug: "hello_world", project_number: "hello_world_3", created_at: "2016-05-11 23:00:19", updated_at: "2016-05-11 23:00:19">