将user_id添加到具有强参数的nested_attributes

时间:2013-12-25 14:35:44

标签: ruby-on-rails ruby ruby-on-rails-4 strong-parameters

有人可以建议我在父模型创建/更新时将user_id添加到嵌套模型的最佳实践吗?

假设我有Band模型,其中分配了许多Song个模型。任何用户都可以编辑Band信息,并在视图中使用Song方法添加任何fields_forSongs表格有user_id列,应填充current_user.id

我正试图弄清楚如何使用强大的参数在我的BandsController中处理它,但没有任何运气。

BandsController band_params方法或多或少看起来像这样:

def band_params
  params.require(:band).permit(
    :name, :location, :city, :country_name, :country_code,
    songs_attributes: [:id, :name, :duration, :_destroy]
  )
end

我可以破解该方法并迭代每个songs_attributes元素添加用户ID但是没有更好/更安全/内置的功能来进行此类操作?如果没有,最有效的方法是什么?

提前致谢。

2 个答案:

答案 0 :(得分:1)

假设在添加歌曲之前你的乐队已经存在:

def update
    @band = Band.find(params[:id])
    @band.user = current_user
    @band.update_attributes(band_params)      
end

如果您同时创建乐队和歌曲:

def create
    @band = Band.new(band_params)
    @band.user = current_user
    @band.save      
end

答案 1 :(得分:0)

我写了一个宝石,会在保存期间自动设置created_by_idupdated_by_id - https://github.com/house9/clerk

如果您使用的是rails 4,则必须使用git

进行安装