多くのユーザーがいるプロジェクトモデルのM:N関係を作成しようとしています。ユーザーは多くのプロジェクトに参加できますが、プロジェクトにも多くのユーザーがいます。結合テーブルに別の列がないため、スルーは必要ないと思います。
そこで、2つのモデル(has_and_belongs_to_many:projectsとhas_and_belongs_to_many:users)に関連付けを含め、新しい移行を設定しました。
class AddProjectsUsersTable < ActiveRecord::Migration
def self.up
create_table :projects_users, :id => false do |t|
t.references :project, :user
end
end
def self.down
drop_table :projects_users
end
end
それはうまくいっています..次のことが正しいかどうかはわかりませんが、私は何かを試しました。このユーザーとプロジェクトの関係を設定できる新しいアクションをユーザーコントローラーで作成しようとしました。
def joinProject
@user = current_user
@user.projects = Project.find(params[:id])
respond_to do |format|
format.html { redirect_to @project, notice: 'Successfully joined project.' }
format.json { head :no_content }
end
end
それはおそらく間違った方法であると言っています: " undefined method 'each' for #<Project:0x00000103f10028>
"
他にどのようにこの関係を設定できますか?このHABTMの関係がどのように機能しているかを私は本当に理解していなかったようです。
誰か助けてくれませんか?
興味深いまたは間違っているかもしれないいくつかのさらなる情報;)
私はこのルートを作成しました:
match "joinProject_user/:id" => "users#joinProject", :as => :joinProject
そして、私は次のように私の見解でコントローラーアクションを呼び出しました:
<%= link_to 'Join', joinProject_path(project) %>