只需尝试弄清楚如何将属性从一个活动模型复制到另一个,而不必一一进行。
我有两个模型,一个是 RFM(ruby to filemaker),一个是 mongoid,都是 mixin 活动模型。
gem "ginjo-rfm"
该模型
require 'rfm'
class StudentAdmin < Rfm::Base
config :layout => 'STUDENT_ADMIN_LAYOUT'
attr_accessor :name_first,:name_last
end
Mongoid模型
class Student
include Mongoid::Document
field :first_name, type: String
field :last_name, type: String
end
有没有我可以做的快速副本?我在活动记录对象之间找到了一个样本,例如
student_admin = ... #load StudentAdmin
Student.new(student_admin.attributes.slice(Student.attribute_names))
但 RFM 不提供属性方法。
编辑
抱歉,我想要达到的目标是比这更好的方法
student_admins = #get student admins from external service
students = []
student_admins.each() do |sa|
students.push(Student.create!(first_name: sa.name_first, last_name: sa.name_last))
end
这个例子只显示了 2 个属性,但实际上有超过 50 个,并且想知道是否有一种方法可以做到这一点而不必指定每个属性,例如,如果两个对象上的属性名称相同,则会自动复制它们。