ActiveRecord 3.2 için Amip taşını da sevebilirsiniz .
Senin durumunda, muhtemelen yararlanmak isteyen nullify
, regex
ya da prefix
yapılandırma DSL bulunan seçenekler.
Bu kolay ve otomatik özyinelemeli tekrarını destekler has_one
, has_many
ve has_and_belongs_to_many
dernek, saha preprocessing ve modele ve anında hem uygulanabilir son derece esnek ve güçlü yapılandırma DSL.
Amip Belgeleri'ni kontrol ettiğinizden emin olun, ancak kullanımı oldukça kolaydır ...
sadece
gem install amoeba
veya ekle
gem 'amoeba'
Gemfile'nıza
ardından modelinize amip bloğunu ekleyin ve dup
yöntemi her zamanki gibi çalıştırın
class Post < ActiveRecord::Base
has_many :comments
has_and_belongs_to_many :tags
amoeba do
enable
end
end
class Comment < ActiveRecord::Base
belongs_to :post
end
class Tag < ActiveRecord::Base
has_and_belongs_to_many :posts
end
class PostsController < ActionController
def some_method
my_post = Post.find(params[:id])
new_post = my_post.dup
new_post.save
end
end
Ayrıca, hangi alanların çeşitli yollarla kopyalanacağını da kontrol edebilirsiniz, ancak örneğin, yorumların çoğaltılmasını önlemek istiyorsanız, ancak aynı etiketleri korumak istiyorsanız, şöyle bir şey yapabilirsiniz:
class Post < ActiveRecord::Base
has_many :comments
has_and_belongs_to_many :tags
amoeba do
exclude_field :comments
end
end
Ayrıca, hem önek hem de soneklerin yanı sıra normal ifadelerle benzersizliği belirtmeye yardımcı olması için alanları önceden işleyebilirsiniz. Ayrıca, amacınız için en okunabilir tarzda yazabilmeniz için çok sayıda seçenek vardır:
class Post < ActiveRecord::Base
has_many :comments
has_and_belongs_to_many :tags
amoeba do
include_field :tags
prepend :title => "Copy of "
append :contents => " (copied version)"
regex :contents => {:replace => /dog/, :with => "cat"}
end
end
Derneklerin yinelemeli kopyalanması kolaydır, sadece çocuk modellerinde amip etkinleştirin
class Post < ActiveRecord::Base
has_many :comments
amoeba do
enable
end
end
class Comment < ActiveRecord::Base
belongs_to :post
has_many :ratings
amoeba do
enable
end
end
class Rating < ActiveRecord::Base
belongs_to :comment
end
DSL yapılandırmasında daha fazla seçenek var, bu nedenle belgelere baktığınızdan emin olun.
Zevk almak! :)
q = p.clone
ve ardındanp == q
, benim hementrue
geri. Öte yandan, eğer kullanırsamq = p.dup
,false
onları karşılaştırırken geri dönerim.