无法使用 rails_admin 写入未知属性
Can't write unknown attribute using rails_admin
我正在使用 rails_admin
来保存其中包含 category
的 project
。我没有定义 project_id
和 category_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 的建议。
我正在使用 rails_admin
来保存其中包含 category
的 project
。我没有定义 project_id
和 category_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 的建议。