这是我第一次使用单表继承。我正在尝试使用填充了辅助方法的选择菜单为博客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列。它是一个字符串。
答案 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 )