我在公司表和用户表之间有1:多的关系(1个公司有很多用户)。但是,似乎company_id是用户的强制值。至少我认为这是造成种子错误的原因:ActiveRecord::AssociationTypeMismatch: Company(#29826300) expected, got String(#8555320)
。如何使关系成为可选关系,以及还包括没有公司的用户?
在我的用户迁移文件中,我有:
t.references :company, index: true, foreign_key: true
add_index :users, [:company_id, :username] #
在我的公司模型文件中:
has_many :users
accepts_nested_attributes_for :users, :reject_if => :all_blank, :allow_destroy => true
在我的用户模型文件中:
belongs_to :organization
答案 0 :(得分:0)
我找到了原因。正如Maxcal所说,它不是OP中的代码就是问题。在添加关联之前,用户模型已经有一个名为company的变量。添加关联后,Rails希望该变量专用于关联。我没想到这一点,并认为company_id
承担这个角色。重命名变量解决了它。