1

我有一个简单的User模型,它Town使用连接表 ( has_and_belongs_to_many) 与许多对象相关联。现在我想通过分配一个逗号分隔的城镇 ID 列表(直接来自作为 HTTP POST 参数发送的表单)来更新属于特定用户的城镇。

使用以下控制器代码保存用户对象:

@current_object.update_attributes(params[:user])

params[:user]包括,town_ids例如,设置为1,4,6

不幸的是,这根本不会更新用户城镇关联。但是,如果我手动操作,效果会非常好:

User.find(:first).town_ids = "1,4,6" # this saves automatically

难道只是不可能批量分配这些collection_singular_ids字段吗?

我的用户模型包含以下内容:

has_and_belongs_to_many :towns

# necessary for mass-assignment, otherwise it results in an exception:
attr_accessible :town_ids

任何帮助是极大的赞赏。

4

1 回答 1

2

您必须将其town_ids作为数组传递:

User.find(:first).update_attributes(:town_ids=>[1,4,6])

如果您将 id 作为字符串传递,Rails 将尝试将字符串转换为整数:

"1,4,6".to_i # => 1
于 2012-07-04T12:33:47.553 回答