1

あるアクティブなモデルから別のアクティブなモデルに属性をコピーする方法を、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 つのオブジェクトで属性名が同じ場合、それらを自動的にコピーします。

4

1 に答える 1