[英]Auto-create `belongs_to` record
之前也曾提出过类似的问题,但我无法弄清楚。
所以我有Model_A和Model_B。 Model_B belongs_to
Model_A。 我要做的是在创建Model_A时自动调用Model B的create
方法。然后脚本接管了一个,为Model_B生成一堆数据。 我使用after_create
因为这只需要发生一次。
它需要以此方式完成。 如果您想知道细节,请随时询问...
所以我在这里得到了Model_A。 我只是似乎无法在create_model_b
获得正确的语法。 在我使用的示例中,我只是得到一个错误,指出该方法对于Model_A不存在。
class Model_A < ActiveRecord::Base
belongs_to :Model_B
after_create :create_model_b
...
def create_model_b
#so I tried a bunch of stuff here but none of it worked
#I need to create a Model_B which will contain the current Model_A id
#ex. self.model_b.create(model_a_id: self.id)
end
end
Model_B实际上并没有做任何特别的事情:
class Model_B < ApplicationController
def create
@model_b = Model_B.new(model_b_params)
create_the_data
respond_to do |format|
if @model_b.save
#redirect
else
#uh oh
end
end
end
end
谢谢!
两种方式:
1。
class Model_A < ApplicationController
def create
@model_a = ModelA.new(model_a_params)
if @model_a.save
ModelB.create(model_a_id: @model_a.id, .....)
#create data for model B either here or with after_create (of model B)
redirect_to somewhere_awesome_path
else
# rescue error
render 'new'
end
end
2。
class Model_A < ActiveRecord::Base
after_create :create_model_b
...
def create_model_b
ModelB.create(model_a_id: id)
end
end
您的模型A包含一半的关联: belongs_to :Model_B
您的模型B缺少与模型A的关联。
例如,根据您设置的关系,您可以使用has_one :Model_A
或has_many :Model_A
完成关联。
这是Active Record文档供参考。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.