1:many 关系,但希望它是可选的

1:many relationship, but would like it to be optional

我在公司 table 和用户 table 之间有 1:many 关系(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

我找到了原因。正如 Maxcal 所说,问题不是 OP 中的代码。在添加关联之前,用户模型已经有一个名为 company 的变量。添加关联后,Rails 期望该变量专用于关联。没想到这一点,以为company_id担当了这个角色。重命名变量解决了它。