首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >rails: ActiveModel::MissingAttributeError:无法写入未知属性`division_id`

rails: ActiveModel::MissingAttributeError:无法写入未知属性`division_id`
EN

Stack Overflow用户
提问于 2017-10-01 07:17:55
回答 1查看 1.8K关注 0票数 1

我正在开发一个简单的支持票系统,但是我遇到了一个奇怪的错误。以下是错误:

ActiveModel::MissingAttributeError:不能写入未知属性 division_id

这是密码:

user.rb:

代码语言:javascript
复制
  class User < ApplicationRecord
  belongs_to :division
  has_many :teckets
  has_many :teckets , through: :user_tecket

  has_secure_password
end

division.rb:

代码语言:javascript
复制
 class Division < ApplicationRecord
  has_many :users
  has_many :users, through: :user_division
  has_many :teckets
  has_many :teckets, through: :teckets_divisions
end

tecket.rb:

代码语言:javascript
复制
class Tecket < ApplicationRecord
  belongs_to :division
  belongs_to :user
  has_one :status
  has_one :status, through: :tecket_statuses
end

teckets_division.rb:

代码语言:javascript
复制
class TecketsDivision < ApplicationRecord
  belongs_to :tecket
  belongs_to :division
end

schema.rb:

代码语言:javascript
复制
ActiveRecord::Schema.define(version: 20171001063612) do

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

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

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

  create_table "tecket_replies", force: :cascade do |t|
    t.integer "tecket_id"
    t.integer "reply_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "tecket_statuses", force: :cascade do |t|
    t.integer "tecket_id"
    t.integer "status_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "teckets", force: :cascade do |t|
    t.string "title"
    t.string "content"
    t.string "platform"
    t.string "version"
    t.string "client_anme"
    t.string "client_phone"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "teckets_divisions", force: :cascade do |t|
    t.integer "tecket_id"
    t.integer "division_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "user_divisions", force: :cascade do |t|
    t.integer "user_id"
    t.integer "division_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "user_teckets", force: :cascade do |t|
    t.integer "user_id"
    t.integer "tecket_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

  create_table "users", force: :cascade do |t|
    t.string "name"
    t.string "email"
    t.string "passwrod"
    t.string "password_digest"
    t.integer "division_id"
    t.datetime "created_at", null: false
    t.datetime "updated_at", null: false
  end

end

当我试图从控制台创建一个用户时,我会得到错误

编辑:我已经根据请求添加了schema.rb文件

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-10-02 00:33:19

从用户表中删除division_id,从分区模型中删除has_many :users

或者(和更简单的方法),

从除法模型中移除user_divisions联接表和这一行:

has_many :users, through: :user_division

而且-你似乎有很多连接表,但我不认为有必要使用它们。在你所展示的大多数情况下,你可以直接把它们联系起来。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46510118

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档