无效的单 table 继承类型:尝试在 Rails 中设置 STI 子类时出错 4
Invalid single-table inheritance type: Error when TRYING to set a STI subclass in Rails 4
这是我第一次使用单一 table 继承。我正在尝试使用填充有辅助方法的 select 菜单为博客 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
新闻_post.erb
class News < Post
end
事件_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
我是否缺少定义子类的内容?再次...第一次这样做...
更新:
是的,table 架构中有一个 post.type 列。它是一个字符串。
您需要将 type
列添加到 posts
table,默认情况下不添加
--------更新------------
原因可能是News
模型是复数,试着告诉railsnews
是uncountable名词。
添加到config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( news )
end
您必须重新定义您的 post_type 方法。
最好使用常量
TYPES = %w( News, Event )
这是我第一次使用单一 table 继承。我正在尝试使用填充有辅助方法的 select 菜单为博客 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
新闻_post.erb
class News < Post
end
事件_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
我是否缺少定义子类的内容?再次...第一次这样做...
更新: 是的,table 架构中有一个 post.type 列。它是一个字符串。
您需要将 type
列添加到 posts
table,默认情况下不添加
--------更新------------
原因可能是News
模型是复数,试着告诉railsnews
是uncountable名词。
添加到config/initializers/inflections.rb
ActiveSupport::Inflector.inflections do |inflect|
inflect.uncountable %w( news )
end
您必须重新定义您的 post_type 方法。
最好使用常量
TYPES = %w( News, Event )