【问题标题】:ActiveModel::UnknownAttributeError: unknown attribute 'employee_id' for EmployeeSkillActiveModel::UnknownAttributeError: EmployeeSkill 的未知属性“employee_id”
【发布时间】:2017-07-30 05:44:53
【问题描述】:

有多对多关系,但不断收到相同的错误:ActiveModel::UnknownAttributeError: EmployeeSkill 的未知属性“employee_id”。我检查了我的两个模型,似乎我都有 ID,所以不知道该怎么办?

class Skill < ApplicationRecord

  validates :skill_name, presence: true, length: { minimum: 3, maximum: 30}
  validates_uniqueness_of :skill_name

  has_many :employee_skills
  has_many :employees, through: :employee_skills
end

...

class Employee < ApplicationRecord

  before_save { self.email = email.downcase }

  #validates :email, presence: true, length: { maximum: 30 }
  VALID_EMAIL_REGEX = /\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i
  validates :email, presence: true, length: { maximum: 255 },
                format: { with: VALID_EMAIL_REGEX },
                uniqueness: { case_sensitive: false }

  has_many :employee_skills
  has_many :skills, through: :employee_skills
end

...

class EmployeeSkill < ApplicationRecord
  belongs_to :employee
  belongs_to :skill
end

【问题讨论】:

  • 检查您的schema.rb,EmployeeSkill 是否有employee_id 属性?

标签: ruby-on-rails database


【解决方案1】:

1) 检查您的迁移文件和数据库中是否有相应的 id。

2) 重启服务器(奇怪但有时需要)。

您的代码看起来不错,所以我认为这是我提到的两种情况之一。

问候,

【讨论】:

  • 谢谢,不知道检查迁移文件和数据库是什么意思。我检查了rails控制台,看起来有一个关联的id:“Employee Load (0.2ms) SELECT "employees".* FROM "employees" ORDER BY "employees"."id" ASC LIMIT ? [["LIMIT", 1]] => # "
  • 我的意思是你可以在db/migrate下查看创建迁移的文件。另外,对于数据库,我的意思是您使用 rails 控制台或数据库管理器的实际数据库。您可以使用db:reset 或db:setup 来清理您的数据库。然后再试一次,因为在您的新架构实施之前,该记录可能已经存在。
猜你喜欢
  • 2021-11-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多