2016-09-16 40 views
0

私は現在、私のプロジェクトでhas_many:throughの関連付けに苦労しています。私は新しいグループを作成しようとしたが、それがうまくいかなかったときRailsでhas_many throughを使って新しいレコードを作成するには?

これは私のモデルので

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 

しかし、私がこのメソッドを呼び出すと、このエラーが発生します。この行で

Could not find the inverse association for group (:placements in Group) 

group.users << User.find_by(id: 6) 

、どのように私はこの問題を解決することができますか?

ありがとうございます!

答えて

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

+0

私はこのレコードのUserGroup.level = "admin"をどうすればできますか?私はこの 'group.users.find_by(id:current_user.id).level =" admin "'の前にgroup.saveを試しましたが、何かエラーがありました。ありがとう! – user3403614

関連する問題