无法使用 rails_admin 写入未知属性

Can't write unknown attribute using rails_admin

我正在使用 rails_admin 来保存其中包含 categoryproject。我没有定义 project_idcategory_id,因为我认为它们应该由 rails 创建。我遇到的问题是使用 project 模型中定义的 def category_id=(id) 方法(见下文)。错误是:

can't write unknown attribute `project_id`

我的模型是:

类别

class Category < ActiveRecord::Base
  belongs_to :project, :inverse_of => :category

end

项目

class Project < ActiveRecord::Base
  has_one :category, :dependent => :destroy, :inverse_of => :project

  def category_id
    self.category.try :id
  end
  def category_id=(id)
    self.category = Category.find_by_id(id)
  end

end

我的架构:

create_table "categories", force: :cascade do |t|
    t.string   "title"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "projects", force: :cascade do |t|
    t.string   "title"
    t.text     "text"
    t.string   "url"
    t.string   "key_feature"
    t.string   "image_1"
    t.string   "image_2"
    t.string   "image_3"
    t.datetime "created_at",  null: false
    t.datetime "updated_at",  null: false
  end

如何将项目连接到类别?

根据您的架构 Projects table 没有 category_id。

类别table都没有project_id

我会添加 category_id 到项目 table。

rails g migration add_category_id_to_projects category_id:integer 
rake db:migrate

最后的解决方案是手动将 project_id 添加到 categories table。

rails g migration add_project_id_to_categories project_id:integer 

感谢@Misha 的建议。