无效的单表继承类型:在Rails 4

时间:2015-07-29 21:29:25

标签: ruby-on-rails ruby-on-rails-4 single-table-inheritance sti

这是我第一次使用单表继承。我正在尝试使用填充了辅助方法的选择菜单为博客Post设置子类。创建Post记录时,我一直收到同样的错误。

There is an Error: Invalid single-table inheritance type: News is not a subclass of Post

这是我的模特

post.erb

class Post < ActiveRecord::Base
  scope :event, -> { where(type: 'Event') } 
  scope :news, -> { where(type: 'News') } 
end

news_post.erb

class News < Post
end

event_post.erb

class Event < Post
end

post_helpers.erb

 def post_types
     [
      ['News'],
      ['Event'],
    ]
 end

_form.erb

= simple_form_for @post do |f| 
  = f.select(:type, post_types { },  {},  { multiple: false , class: " default_select form-control "  })
#rest of the form redacted

我是否缺少定义子类的东西?再次......第一次这样做......

更新 是的,表模式中有一个post.type列。它是一个字符串。

2 个答案:

答案 0 :(得分:0)

您需要将type列添加到posts表格,默认情况下不会添加

-------更新------------

原因可能是News模型是复数,尝试告诉我news是不可数名词。

添加到config/initializers/inflections.rb

ActiveSupport::Inflector.inflections do |inflect|
  inflect.uncountable %w( news )
end

答案 1 :(得分:-1)

您必须重新定义post_type方法。

更好地使用常量

 TYPES = %w( News, Event )