我目前正在努力解决has_many:通过我项目中的关联。
这是我的模特
class Group < ActiveRecord::Base
has_many :user_groups ,dependent: :destroy
has_many :users , through: :user_groups
end
class User < ActiveRecord::Base
has_many :user_groups ,dependent: :destroy
has_many :groups , through: :user_groups
end
class UserGroup < ActiveRecord::Base
belongs_to :user , inverse_of: :placements
belongs_to :group , inverse_of: :placements
validates :level , presence: true
end
因此,当我尝试创建新组时,但它没有成功。 这是我的控制器
class GroupController < ApplicationController
def create
group = Group.new(group_params)
group.users << User.find_by(id: current_user.id)
if group.save
render json: group, status: 201, location: [group]
else
render json: { errors: group.errors }, status: 422
end
end
private
def group_params
params.require(:group).permit(:name, :shuttle_price, :court_price)
end
end
但是当我调用create方法时,我收到了这个错误。
Could not find the inverse association for group (:placements in Group)
在这一行
group.users << User.find_by(id: 6)
那么我该如何解决这个问题?
谢谢!
答案 0 :(得分:1)
删除:inverse_of
class UserGroup < ActiveRecord::Base
belongs_to :user
belongs_to :group
validates :level , presence: true
end
您无需在此处添加inverse_of
。阅读此when to use inverse_of