新数据库,但记录仍显示1条记录全部为空?

时间:2015-07-26 20:01:26

标签: ruby-on-rails ruby ruby-on-rails-4

我有两个模型,ProjectProjectImage。这两者是相关联的。

为什么如果我还没有上传任何照片,我的ProjectImage中已有记录,但所有值都为空?我用rake db:create db:migrate

清理了我的数据库

我很困惑......

<%= @project.project_images.to_json %>

给我

 [{"id":null,
   "project_id":null,
   "project_photo_id":null,
   "file_id":null,
   "created_at":null,
   "updated_at":null,
   "photo_file_name":null,
   "photo_content_type":null,
   "photo_file_size":null,
   "photo_updated_at":null}]

我正在使用paperclip gem

修改

<%= simple_form_for @project, html: { multipart: true } do |f| %>
 <%= file_field_tag "photos[]", multiple: true %>
 <%= f.button :submit %>
<% end %>

class ProjectController < ApplicationController
  def new
    @project = Project.new
    @project.project_images.build
  end
end

你认为它的出现是@project.project_images.build吗?

1 个答案:

答案 0 :(得分:1)

您的编辑可识别问题:@project.project_images.build创建一个新的未保存的ProjectImage并将其推送到@project.project_images关系(请参阅ActiveRelation#build的定义)。因此,当您的视图呈现该关系时,它包含空记录。别担心,它实际上并不在您的数据库中!由于id列不为空(或使用Athar mentionedpersisted?方法),您可以确定图片未被保存。

要解决此问题,您只需从控制器中删除@project.project_images.build行即可。它似乎没有达到目的。