我遇到了一个非常不寻常的情况,我似乎无法弄清楚为什么会发生这种情况:
我有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上看到整个代码库。
答案 0 :(得分:1)
您应该从attr_accessor :content
模型中移除Post
,因为它将content
设置为virtual attribute
- 未持久存储到数据库的模型属性。