【发布时间】:2015-12-07 16:32:58
【问题描述】:
我有一个带有og_objects、og_actions 和stories 的应用程序
我已经创建了一种方法来创建此应用的克隆。
我现在尝试将og_objects、og_actions 和stories 复制到克隆中,但我卡住了。
我被困在两个地方。
1. 当我创建一个克隆时,对象、动作、故事被移动到
新克隆,但它们没有重复,这意味着父应用程序丢失
他们。
2. 我得到一个错误,我的新克隆没有 og_objects 属性。具体错误是:
ActiveModel::MissingAttributeError (can't write unknown attribute `og_actions'):
app/models/app.rb:39:in `block in populate'
app/models/app.rb:36:in `populate'
app/models/app_generator.rb:15:in `generate'
app/controllers/apps_controller.rb:12:in `create'
这是我的代码:
class App < ActiveRecord::Base
validates :name, :presence => true, :uniqueness => {:scope => :dev_mode}
validates :user_id, :presence => true
before_validation :validate_app
belongs_to :user
has_many :og_actions
has_many :og_objects
has_many :stories
has_many :log_reports
has_many :clones, class_name: "App", foreign_key: "parent_id"
belongs_to :parent_app, class_name: "App"
def self.dev_modes
['development', 'stage', 'production']
end
def is_clone?
!!self.parent_id
end
def clone_ids
if !is_clone?
self.clones.all.map(&id)
end
end
def populate
p "doing populate"
p self.clones
p "original clones"
new_og_actions = self.og_actions.dup
new_og_objects = self.og_objects.dup
new_stories = self.stories.dup
self.clones.each do |c|
p "updating ->"
p c
c[:og_actions] = new_og_actions
c[:og_objects] = new_og_objects
c[:stories] = new_stories
end
end
#Other irrelevant code here:
在我的控制器中,我有一个生成器,我有以下代码:
if @parent_id.length > 0
parent_app = App.find(@parent_id)
App.create_with(og_actions: parent_app.og_actions.dup, og_objects: parent_app.og_objects.dup, stories:parent_app.stories.dup, parent_id: @parent_id, user_id: @user_id, app_id:@app_id, app_secret: @app_secret).find_or_create_by!(name: @name, dev_mode: 'clone')
parent_app.populate
else
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4 clone dup