首页 > 解决方案 > 无法保存具有许多直通关系轨道的记录

问题描述

我试图通过与另一个模型的关系来保存一个具有 has_mnay 的模型,不幸的是它不允许保存让我解释一下

class Group < ActiveRecord::Base
  has_many :group_members, inverse_of: :group
  has_many :members, through: :group_members
end

class GroupMember < ActiveRecord::Base
  belongs_to :group
  belongs_to :member

  validates_presence_of :group, :member
end

class Member < ActiveRecord::Base
  has_many :group_members, inverse_of: :member
  has_many :groups, through: :group_members

 validates :email, presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: true

end

所以在我的控制台中我创建了一个组

g = Group.last.dup (duplicating a record)
m = Member.last
g.members << m
g.save!

我得到这个错误

ActiveRecord :: RecordInvalid: Authentication went wrong: Members email is already used,

请注意,我在数据库中只有一个成员我不需要做其他事情,过去一天我一直在尝试这个,我找不到解决方案

标签: rubyruby-on-rails-4

解决方案


如果您收到此错误,通常意味着存在与 has_many 关系同名的属性/方法名称。我有一个名为“csv_products”的列名,它将存储要处理的产品的 csv 文件。并且有一个名为“has_many :products”的关系。

每次我尝试对“csv_products”进行操作(将其设置为 nil 或更新它)时,都会抛出此错误。我最终将其重命名为“csv_file”。


推荐阅读