我需要将属性从一个模型复制到另一个模型。所以我明确地将它们设置为:
user = current_user.attributes.slice("id", "name", "surname")
user["user_id"] = user.delete("id")
order.assign_attributes(user)
虽然我想做以下事情:
order.attributes = user.attributes
但是用户对象还有很多其他属性可以防止质量分配。 那么有可能以某种方式只分配可访问的属性吗?
答案 0 :(得分:1)
没有测试,但我认为它应该有效
attrs = Order.accessible_attributes.each_with_object({}) do |name, attrs|
attrs[name] = user.read_attribute(name) if name.present?
end
attrs[:user_id] = attr.delete(:id)