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

时间:2015-06-22 22:07:41

标签: ruby-on-rails ruby ruby-on-rails-4 associations

我在公司表和用户表之间有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

1 个答案:

答案 0 :(得分:0)

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