这是一个简单的问题,我有两个模型如下,当我创建一个新的Question模型实例时,它的post_type attr是nil。 但是当我尝试使用rails c时,我可以看到它获得值1,当我保存模型时,它的值仍为零。 有什么解释吗?
class Post < ActiveRecord::Base
POST_QUESTION = 1
end
class Question < Post
def initialize
p "post_type=#{@post_type}"
@post_type = Post::POST_QUESTION
super
p "post_type=#{@post_type}"
end
end
答案 0 :(得分:1)
Rails将使用单表继承处理这样的事情。您需要"type"
表中的posts
字符串列。
class Post < ActiveRecord::Base
#...
end
class Question < Post
#...
end
您创建的任何问题都将保存到类型为"Question"
的帖子表中。
您是否有理由要求帖子类型为整数?
无论如何,它写不起来的原因是所有的模型属性都存储在一个名为@attributes
的实例变量中。虽然从数据库加载对象后可以使用其他实例变量,但ActiveRecord不会关注它们。