2012-08-09 65 views
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])

你觉得呢?他们是这种设计的替代品吗?

质量分配是我的一个棘手的问题.....

回答

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) 
0

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

相关问题