无法写入未知属性“ parent_id”,has_one和belongs_to

问题描述 投票:0回答:1

我正在使用rails 4,想知道是否有人可以在我的代码中找到问题所在。

我有项目模型,并且创建了一个与项目具有belongs_to-has_one关系的团队模型。

项目模型:

class CrmProject < ActiveRecord::Base
  has_one :crm_team

团队模型

class CrmTeam < ActiveRecord::Base
  belongs_to :crm_project
    accepts_nested_attributes_for :crm_project
  belongs_to :crm_section
  belongs_to :manager, class_name: "User"
  has_many :users
    accepts_nested_attributes_for :users
end

[提交表单以创建新团队时,出现此错误:

ActiveModel::MissingAttributeError in CrmTeamsController#create
can't write unknown attribute `crm_team_id`

并从服务器登录:

  Parameters: {"crm_team"=>{"crm_project"=>"5", "manager"=>"3", "user_ids"=>["", "2"]}, "co
mmit"=>"Create Crm team"}

  User Load (0.1ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ?  ORDER BY "users"."id" ASC LIMIT 1
  [["id", 1]]
  User Load (0.2ms)  SELECT  "users".* FROM "users" WHERE "users"."id" = ? LIMIT 1  [["id", 2]]
   (0.1ms)  begin transaction
  User Exists (0.2ms)  SELECT  1 AS one FROM "users" WHERE ("users"."email" = '[email protected]' AND "users"."
id" != 2) LIMIT 1
  SQL (0.2ms)  INSERT INTO "crm_teams" ("created_at", "updated_at") VALUES (?, ?)  [["created_at", "2020-03-1
1 07:29:19.735115"], ["updated_at", "2020-03-11 07:29:19.735115"]]
   (0.2ms)  rollback transaction
Completed 500 Internal Server Error in 9ms (ActiveRecord: 1.0ms)
ruby-on-rails ruby-on-rails-4 form-submit belongs-to has-one
1个回答
0
投票

当使用像这样的has_one关系时

has_one :crm_team

Rails希望您将crm_team_id添加到crm_project中,以便了解哪个crm_team与crm_project对象相关。添加它可以解决您的问题。

我认为这样定义对立面的逻辑要好得多。因为将来这些团队可以有多个项目。

class CrmProject < ActiveRecord::Base
  belongs_to :crm_team
class CrmTeam < ActiveRecord::Base
  ***has_one/has_many(pick one)*** :crm_project
    accepts_nested_attributes_for :crm_project
  belongs_to :crm_section
  belongs_to :manager, class_name: "User"
  has_many :users
    accepts_nested_attributes_for :users
end
© www.soinside.com 2019 - 2024. All rights reserved.