1

我需要将属性从一个模型复制到另一个模型。所以我明确地这样设置它们:

 user = current_user.attributes.slice("id", "name", "surname")
 user["user_id"] = user.delete("id")
 order.assign_attributes(user)

虽然我想做以下事情:

 order.attributes = user.attributes

但是用户对象还有很多其他属性可以防止批量分配。那么是否有可能以某种方式仅分配可访问的属性?

4

1 回答 1

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)
于 2013-07-20T12:54:07.183 回答