通过关联接受带有has_many的* singular *参数

时间:2014-07-22 22:35:26

标签: ruby-on-rails-4 associations rails-activerecord

我有一组如下设置的Rails模型,并且我在Rails 4中使用强参数通过钱包模型在卡片和用户之间建立关联:

class User < ActiveRecord::Base
  has_many :wallets
  has_many :cards, through: :wallets
end

class Card < ActiveRecord::Base
  has_many :wallets
  has_many :users, through: :wallets
end

class Wallet < ActiveRecord::Base
  belongs_to :user
  belongs_to :card
end

在我的基本卡控制器中,我已经定义了强大的参数:

def card_params
  params.require(:card).permit(:nickname, :number, :user_ids)
end

但是在我的API卡控制器中,我想接受一个单一的user_id作为&#34; user_id&#34;的值。键。如何通过POST设置API :: CardsController类来接受user_id而不是(或者除了)user_ids?

我的API卡控制器的要点:https://gist.github.com/tfilter/91986ae0ed6e215cbeca

1 个答案:

答案 0 :(得分:0)

首先想到的是将:user_id添加到permit来电,然后将其分配给user_ids,例如card.user_ids = [card_params[:user_id]]

您可以做的第二件事是直接在card_params方法中分配它。这样的事情。

def card_params
  cp = params.require(:card).permit(:nickname, :number, :user_ids)
  cp[:user_ids] = [params[:card][:user_id]] if params[:card][:user_id]
  cp
end

如果我想出更优雅的话,我会更新答案。