在我正在开发的 Sinatra 应用程序中使用 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 构建了多个站点。这个问题完全让我困惑。谁能告诉我我做错了什么?