有人可以建议我在父模型创建/更新时将user_id添加到嵌套模型的最佳实践吗?
假设我有Band
模型,其中分配了许多Song
个模型。任何用户都可以编辑Band
信息,并在视图中使用Song
方法添加任何fields_for
。 Songs
表格有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但是没有更好/更安全/内置的功能来进行此类操作?如果没有,最有效的方法是什么?
提前致谢。
答案 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_id
和updated_by_id
- https://github.com/house9/clerk
如果您使用的是rails 4,则必须使用git
进行安装