保存具有多个关联的模型

时间:2014-07-16 00:34:23

标签: ruby-on-rails

我有一个名为影院的模型,用于在影院上存储信息。

我根据用户搜索的邮政编码列出了影院。然后,用户可以点击单个剧院并显示评论。如果他们已登录,则可以添加评论。

所以我的模特是:

  

Theatres has_many reviews

     

用户有很多评论

     

评论属于用户并且有一个影院

提交新评论时,我这样做(@theater_id通过添加评论提交按钮作为参数传递):

def create
      @user_id = current_user
      @review = Review.create(review_params.merge(:user_id => @user_id,:theater_id => @theater_id))
      if @review.save
        redirect_to @review
      else 
        render 'edit'
      end
   end

我觉得因为我的关联,有一个更容易更正确的方法来做到这一点。就像rails应该自动输入我当前的用户ID和影院ID ...对吗?

由于

1 个答案:

答案 0 :(得分:0)

嵌套资源

我不知道您的routes是如何设置的,但这通常属于nested resources范围内,reviews对象将在{{1}下创建对象:

theatre

当您使用这样的路由时,它会在#config/routes.rb resources :theatres do resources :reviews #-> domain.com/theatres/1/reviews/new end 中设置一个名为controller的额外参数,您可以使用该参数填充新的theatre_id对象:

Review

-

或者,您可以设置新#app/controllers/reviews_controller.rb Class ReviewsController < ApplicationController def create @review = Review.new(review_params) @review.save end private def review_params params.require(:review).permit(:your, :params).merge(theatre_id: params[:theatre_id] end end 对象的theatre对象:

ActiveRecord