Добавление метода 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">
Другие вопросы по тегам