0

这是一个简单的问题,我有 2 个模型如下,当我创建一个新的 Question 模型实例时,它的 post_type attr 为 nil。但是当我尝试使用 rails c 时,我可以看到它的值是 1,而当我保存模型时,它的值仍然是 nil。有什么解释吗?

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
4

1 回答 1

1

Rails 将使用单表继承为您处理此类事情。您需要表"type"中的字符串列posts

class Post < ActiveRecord::Base
  #...
end

class Question < Post
  #...
end

您创建的任何问题都将保存到带有 type 的帖子表中"Question"

您是否有理由需要帖子类型为整数?

无论如何,它不能像你写的那样工作的原因是所有模型属性都存储在一个名为@attributes. 从数据库加载对象后,您可以使用其他实例变量,但 ActiveRecord 不会关注它们。

于 2012-10-14T04:32:04.263 回答