Функции Javascript, SetInterval и SetTimeOut вызывают беспорядочную прокрутку

Поскольку при дублировании модели может быть больше логики, я бы предложил создать новый класс, где вы будете обрабатывать всю необходимую логику. Чтобы облегчить это, есть камень, который может помочь: clowne

В соответствии с их примерами документации для модели пользователя:

class User < ActiveRecord::Base
  # create_table :users do |t|
  #  t.string :login
  #  t.string :email
  #  t.timestamps null: false
  # end

  has_one :profile
  has_many :posts
end

Вы создаете свой cloner class:

class UserCloner < Clowne::Cloner
  adapter :active_record

  include_association :profile, clone_with: SpecialProfileCloner
  include_association :posts

  nullify :login

  # params here is an arbitrary Hash passed into cloner
  finalize do |_source, record, params|
    record.email = params[:email]
  end
end

class SpecialProfileCloner < Clowne::Cloner
  adapter :active_record

  nullify :name
end

, а затем использовать его:

user = User.last
#=> <#User(login: 'clown', email: 'clown@circus.example.com')>

cloned = UserCloner.call(user, email: 'fake@example.com')
cloned.persisted?
# => false

cloned.save!
cloned.login
# => nil
cloned.email
# => "fake@example.com"

# associations:
cloned.posts.count == user.posts.count
# => true
cloned.profile.name
# => nil

Пример, скопированный из проекта, но он даст четкое представление о том, чего вы можете достичь.

Для быстрой и простой записи я бы пошел с:

Model.new(Model.last.attributes.reject {|k,_v| k.to_s == 'id'}

7
задан plawres 20 October 2016 в 15:00
поделиться