我想为自己有一个更系统的解决方案,以避免批量分配。
一个典型的情况是从 params 中删除 id 或 user_id(通过表单自动提交)并在内部用 current_user.id 替换它(在 MyController#create 中)。
我能想到的一个解决方案是从 params 哈希创建对象,然后 update_attributes (父对象和子对象)用内部值替换敏感属性:
@user = User.create(:params[:user])
@user.update_attributes(:id => current_user.id)
@user.profile.update_attributes(:user_id => current_user.id)
@user.preference.update_attributes(:user_id => current_user.id)
有没有更短/更干的方式来表达这个?
如果偏好、配置文件等是用户的子对象(通过构建方法创建),我如何编写一个方法来为用户查找他们的外键并自动将它们替换为我传递给父级的值?
谢谢你。