Rails 3 has_many,在控制器中手动分配

时间:2012-01-16 12:48:52

标签: ruby-on-rails ruby-on-rails-3

我有一个设置用于创建对象(设备)的表单,以及设备has_many功能。

我可以使用用户可选择的表单(例如带复选框)轻松地设置它。但是,我想在控制器中设置它们,因为它们不是用户可选择的(它们将基于创建设备时传递的一些其他参数,例如设备类型)。

如何设置控制器,以便基本上可以根据创建的设备类型硬连接has_many关系?

谢谢!

编辑:将操作重命名为能力以避免混淆

1 个答案:

答案 0 :(得分:0)

您可以使用Rails在设置关联时自动定义的一些方法来设置这样的关联。基本上,你应该可以去

def action_name
  #other action code

  @device = Device.find(params[:id]) #or however you get it
  #if you want to grab abilities using SQL:
  @device.abilities = Ability.where('some conditions')
  #or if you have a particular group:
  @device.abilities = [ability_1, ability_2]
  @device.save!
end