Rails 4 composite_primary_keys gem和自定义操作问题

时间:2014-10-28 23:15:09

标签: ruby-on-rails ruby ruby-on-rails-4 composite-primary-key

我有一个名为subscriptions的连接模型,它将用户绑定到他们订阅的组。在用户可以访问组内容之前,组所有者必须确认对该组的订阅。我正在尝试创建“确认订阅”#39;挂起订阅的按钮但是我在使用复合主键gem查找订阅时遇到了一些麻烦。我有宝石所有设置和工作。我在订阅控制器和相应的视图中创建了一个名为pending_subscriptions的自定义操作。操作中的代码是:

def pending_subscriptions
    @group = Group.where(:owner_id => current_user.id)
    @pending_subscriptions = Subscription.where(group_id: @group, role: "pending")
    @subscription = Subscription.find([params[:user_id], params[:group_id]])
   end

我收到错误:

Couldn't find Subscription with ID=, WHERE "subscriptions"."user_id" IS NULL AND "subscriptions"."group_id" IS NULL

如何正确实例化@subscription实例,以便在form_for中使用它通过put请求将params传递给更新操作?

1 个答案:

答案 0 :(得分:0)

正如您可以在日志中清楚地看到params[:user_id]为空(无),与params[:group_id]相同。

所以你没有正确传递一些参数 - 请查看日志,服务器实际接收哪些参数。我猜:

@subscription = Subscription.find([params[:subscription][:user_id], params[:subscription][:group_id]])

或者,如果你使用了正确的strong_parameters:

@subscription = Subscription.find([subscription_params[:user_id], subscription_params[:group_id]])