あるアクティブなモデルから別のアクティブなモデルに属性をコピーする方法を、1つずつ実行する必要なく単純に解決しようとしています。
私は 2 つのモデルを持っています。1 つは RFM (ruby から filemaker) で、もう 1 つは mongoid で、両方とも mixin アクティブ モデルです。
gem "ginjo-rfm"
モデル
require 'rfm'
class StudentAdmin < Rfm::Base
config :layout => 'STUDENT_ADMIN_LAYOUT'
attr_accessor :name_first,:name_last
end
モンゴイドモデル
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 を超える属性があり、すべての属性を指定せずにそれを行う方法があるかどうか疑問に思っていました。たとえば、2 つのオブジェクトで属性名が同じ場合、それらを自動的にコピーします。