无法使用rails_admin编写未知属性

时间:2015-04-24 22:25:14

标签: ruby-on-rails rails-admin

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

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

2 个答案:

答案 0 :(得分:2)

如何将项目连接到类别?

根据您的架构项目表没有category_id。

类别表中没有project_id

我会将category_id添加到Projects表。

rails g migration add_category_id_to_projects category_id:integer 
rake db:migrate

答案 1 :(得分:0)

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

rails g migration add_project_id_to_categories project_id:integer 

感谢@Misha的建议。