У меня проблемы с созданием новой строки модели в базе данных с использованием ActiveRecord в приложении Sinatra, которое я разрабатываю. Рассматриваемый объект создается без каких-либо ошибок (с помощью сохранения !, исключений не возникает), но большая часть данных, которые я указываю для сохранения, отсутствует.
class ProjectMeta < ActiveRecord::Base
attr_accessor :completion_ratio, :num_stories, :num_completed_stories, :original_target_date, :current_target_date
...
def self.create_from_project(project)
meta = ProjectMeta.new
meta.project_id = project.id
meta.num_stories = project.num_stories
meta.num_completed_stories = project.num_completed_stories
meta.completion_ratio = ProjectMeta.calculate_ratio(project.num_completed_stories, project.num_stories)
meta.current_target_date = project.current_target_date
meta.save!
meta
end
...
end
Все проверки данных из объекта проекта, который я отправляю, а также нового мета-объекта, который я создаю, показывают, что данные присутствуют. Но когда я делаю meta.inspect
до и после сохранения, это показывает, что все данные (кроме project_id) находятся в состоянии по умолчанию (нули). Я также проверил meta.errors.nil?
и, конечно же, нет никаких ошибок после сохранения.
Что больше всего удивляет, так это то, что если я развернусь и получу новый метаэкземпляр с этим project_id и введу данные, это не спасет БД.
Это расстраивает меня, потому что я создал несколько сайтов в Rails и Sinatra с ActiveRecord. Этот вопрос меня совершенно сбивает с толку. Может кто-нибудь сказать мне, что я делаю не так?