首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >有没有办法改变这种批量作业设计?

有没有办法改变这种批量作业设计?
EN

Stack Overflow用户
提问于 2012-08-09 10:10:03
回答 2查看 48关注 0票数 0

我有3个模型,用户,军队和工程师。当用户创建属于他们的陆军时,他们可以选中一个名为siege的复选框,该复选框将创建属于该陆军和用户的工程师。不过,我对批量分配有些担心。在我的陆军模型中,工程师由我的方法创建:

代码语言:javascript
复制
attr_reader :siege
after_save :if_siege
private
 def if_siege
   if self.siege
    Engineer.create!( :user_id => self.user.id, :army_id => self.id )
   end
 end
end

但据我所知,分配这两个ID的唯一方法是在我的工程师模型中执行此操作:

代码语言:javascript
复制
class Engineer
 attr_accessible :user_id, :army_id

这似乎并不安全,即使永远不能在表单上创建工程师,而是通过链接或复选框自动创建。理想的做法是自动分配这两个属性,就像在控制器中所做的那样。例如:

example = current_user.examples.build(params[:example])

你认为如何?他们是这种设计的替代品吗?

批量分配对我来说是一个棘手的问题.....

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-08-09 10:14:51

问题出在哪里:

代码语言:javascript
复制
engineer = Engineer.new
engineer.user_id = self.user.id
engineer.army_id = self.id
engineer.save!

您也可以在此处指定不关心批量分配问题:

代码语言:javascript
复制
params = { :user_id => self.user.id, :army_id => self.id }
Engineer.create!(params, without_protection: true)
票数 2
EN

Stack Overflow用户

发布于 2012-08-09 10:23:22

为什么你需要明确地把工程师和用户联系起来?如果您将工程师与陆军联系起来,那么该工程师不会通过陆军将关系传递给用户吗?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11875828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档