我有一个Type
模型,它与自身有一对多的关系,即
class Type < ActiveRecord::Base
belongs_to :supertype, class_name: Type, foreign_key: 'supertype_id'
has_many :subtypes, class_name: Type, foreign_key: 'supertype_id'
end
在此模型的表单中,我希望<select>
从现有类型列表(或零)中选择它的超类型。这样做的正确方法是什么?现在我的代码看起来像这样:
<%= form_for(@type) do |f| %>
<%= f.select(:supertype_id, ( Type.all.collect {|t| [ t.name, t.id ] }) + ["",nil] ) %>
<% end %>
但显然这不起作用。
在我的迁移中,我有这段代码,如果有帮助的话:
create_table :types do |t|
t.string :name
t.references :supertype, index: true, foreign_key: true
t.timestamps null: false
end
答案 0 :(得分:1)
belongs_to
和has_many
调用需要将:class_name
指定为 String 而不是实际的类对象(并且您可以选择省略{{1}在:foreign_key
):
belongs_to