У меня возникла проблема с созданием новой строки модели в базе данных с помощью ActiveRecord в приложении Sinatra, которое я разрабатываю. Объект, о котором идет речь, создается без ошибок (с помощью save !, никаких исключений не возникает), но большая часть данных, которые я указываю для сохранения, отсутствует.Проблема при создании модели ActiveRecord: данные отсутствуют из сохранения
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 и включу данные, это не сэкономит никакой проблеме для db.
Это меня разочаровывает, потому что я создал несколько сайтов в Rails и Sinatra с помощью ActiveRecord. Этот вопрос полностью озадачивает меня. Может ли кто-нибудь сказать мне, что я делаю неправильно?
Забыл упомянуть, что я пробовал каждое заклинание творения, о котором я могу думать: ProjectMeta.create (: project_id => project.id ...), ProjectMeta.create do ... end и т. Д. – localshred