我想在每个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
型
1条答案
按热度按时间raogr8fs1#
没有使用active record的双向has_many关联。如果User表has_many caregiver,那么Caregiver表应该是
belongs_to :user
。如果你想让每个表都有很多其他的记录,那么你应该考虑使用
has_and_belongs_to_many
关联。使用has_many关系的唯一方法是使用:through
,但是你需要另一个表。你可以了解更多关于关联here的信息。