【发布时间】:2012-06-28 09:47:39
【问题描述】:
我正在尝试为拥有 _and_belongs_to _many 用户的项目模型创建 M:N 关系。一个用户可以加入许多项目,但项目也有许多用户。我想我不需要通过,因为我的连接表不会有另一列。
所以我将关联包含在我的两个模型中(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) %>
【问题讨论】:
标签: ruby-on-rails-3 routes has-and-belongs-to-many