Multiples has_many与同一个表关联ruby

5w9g7ksd  于 5个月前  发布在  Ruby
关注(0)|答案(1)|浏览(52)

我想在每个User中有两个对Caregivers表的引用,关系将是双向的has_many,问题是我的定义中一定有什么错误,因为当我在变量current_user中有一个User时,我在控制器中执行以下行:current_user .reported_caregivers << @ caregivers,current_user.保存,没有保存任何东西。
这些是模型:

class Caregiver < ApplicationRecord
   has_many :users, dependent: :nullify #first reference to User
   has_many :reporters, :class_name => 'User', dependent: :nullify #new reference
end

class User < ApplicationRecord
   has_many :caregivers, dependent: :nullify #first reference
   has_many :reported_caregivers, :class_name => 'Caregiver', dependent: :nullify #new reference
...

字符串
这些是

class AddReportersToCaregivers < ActiveRecord::Migration[7.0]
   def change
     add_reference :caregivers, :reporters, foreign_key: { to_table: :users}, default: []
   end
end

class AddReportedCaregiversToUsers < ActiveRecord::Migration[7.0]
   def change
     add_reference :users, :reported_caregivers, foreign_key: { to_table: :caregivers}, default: []
   end
end

raogr8fs

raogr8fs1#

没有使用active record的双向has_many关联。如果User表has_many caregiver,那么Caregiver表应该是belongs_to :user
如果你想让每个表都有很多其他的记录,那么你应该考虑使用has_and_belongs_to_many关联。使用has_many关系的唯一方法是使用:through,但是你需要另一个表。你可以了解更多关于关联here的信息。

相关问题