0

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

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 的唯一方法是在我的工程师模型中执行此操作:

class Engineer
 attr_accessible :user_id, :army_id

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

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

你怎么看?他们是这种设计的替代品吗?

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

4

2 回答 2

2

有什么问题:

engineer = Engineer.new
engineer.user_id = self.user.id
engineer.army_id = self.id
engineer.save!

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

params = { :user_id => self.user.id, :army_id => self.id }
Engineer.create!(params, without_protection: true)
于 2012-08-09T02:14:50.930 回答
0

为什么需要明确地将工程师与用户联系起来?如果您将工程师与军队联系起来,那工程师不会通过军队与用户建立关系吗?

于 2012-08-09T02:23:22.167 回答