在Rails中创建关联

时间:2013-05-05 18:08:33

标签: ruby-on-rails model controller associations

我有模型项目和模型用户。我在这些中有了belongs_and_has_many。但现在我需要告诉Rails:这个特定的用户属于这个特定的项目。如何在Project控制器中执行此操作,如何从项目视图中调用此方法?非常感谢你。

在项目的* show.html.erb 中*我有:

<select id="user_select" name="user_select" class="input-large">
  <% @users.each do |user| %>
    <option><%= user.username %></options>
  <% end %>
</select>
<!-- button to addfriend method here -->

我需要从这里调用方法“addfriend”,其中包含选择参数和相关项目的用户: - /

项目控制器中

方法 addfiend

def addfriend
      @project = Project.find(params[:id])
      @project.users << User.find(params[:user])
      respond_to do |format|
        format.html { redirect_to project, :notice => 'Added.' }
      end
end

2 个答案:

答案 0 :(得分:0)

如果在模型项目中,您有has_and_belongs_to_many :users,则项目对象具有implicit collection个用户,可以像任何其他集合一样添加,例如:

project.users << User.find(:first, :conditions => "name = 'foo'")

答案 1 :(得分:0)

在控制器操作中看起来像这样:

@project = Project.create(:user_id => user_id)

虽然user_id是你的外键(你可能希望从你的视图中传递出来)。

此代码将在某些控制器操作中编写,您必须定义将URL连接到此操作的路由。

请注意,一旦调用运行此代码的操作,您就可以从视图中访问@project。

您可以阅读有关路线here的信息。 您可以在rails here中阅读有关mvc的信息。 你可以在这里阅读关联: http://guides.rubyonrails.org/association_basics.html