内容被保存为nil rails

时间:2015-04-19 20:27:13

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

我遇到了一个非常不寻常的情况,我似乎无法弄清楚为什么会发生这种情况:

我有User型号:

class User < ActiveRecord::Base
  has_many :posts, dependent: :destroy
end

Post模型:

class Post < ActiveRecord::Base
  attr_accessor :content
  belongs_to :user
  default_scope{order('created_at DESC')}

  #validations
  validates(:content, presence: true, length: {maximum: 140})
  validates(:user_id, presence: true)
end

我对帖子的迁移如下所示:

require_relative '20150405091935_create_posts'
class FixPosts < ActiveRecord::Migration
  def change
    revert CreatePosts #this was the original migration w/o a user reference

    create_table :posts do |t|
      t.belongs_to :user, index: true
      t.string :content
      t.integer :user_id

      t.timestamps null: false
    end
  end
end
  • 生成的架构似乎是有序的
  • 后期验证到位且工作正常(我的规格正在通过 我在控制台做了一些手动测试)

问题

我创建了一个post

user = User.first
user.posts.create(content: "This is a post.")
=> true

然而,当我打印出来时,我得到以下内容:

#<Post:0x007fc1a0f1d628
  id: 1,
  user_id: 1,
  content: nil,
  created_at: Sun, 19 Apr 2015 19:45:38 UTC +00:00,
  updated_at: Sun, 19 Apr 2015 19:45:38 UTC +00:00>]

内容丢失并返回nil

这里发生了什么?我错过了什么吗?

任何帮助将不胜感激!感谢您的时间。

如果需要任何其他信息,请与我们联系。您还可以在GitHub上看到整个代码库。

1 个答案:

答案 0 :(得分:1)

您应该从attr_accessor :content模型中移除Post,因为它将content设置为virtual attribute - 未持久存储到数据库的模型属性。