我有一组如下设置的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
答案 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
如果我想出更优雅的话,我会更新答案。