RoR3 HABTM复选框不保存

时间:2011-11-13 21:35:47

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

在控制台中,我的查询工作正常:

u = Radcheck.get(23)
g = Group.get(16) 
@relationship = u.radgroups << g

保存写入数据库。

当我在rails视图中尝试这样做时,它不会保存。

<%= check_box_tag "radcheck[groupnames][]", group.id, @radcheck.radgroups.include?(group) %> 

我正在使用datamapper,并将radcheck模型设置如下:

has n, :radusergroup, :child_key => [:username], :parent_key => [:username]
has n, :radgroups, :through => :radusergroup, :model => 'Group'

我的radcheck表包含用户名和组名

有什么建议吗?

- 更新 -

下面再回答一下,我在radusergroup表(我的连接表)中添加了一个id。目前看起来像这样:

+-------------+---------------------------+----------+----+
| username    | groupname                 | priority | id |
+-------------+---------------------------+----------+----+
| hcTTm       | 3600                      |        1 |  1 |
| FpKS4       | 3600                      |        1 |  2 |
| jenny       | Disabled-Users            |        1 |  3 |
| silver      | silver                    |        1 |  4 |
| shushQb     | 30-minutes                |        0 |  5 |
| jenny       | silver                    |        1 |  6 |
+-------------+---------------------------+----------+----+

这让我分心了

我的模型中有完全正确的信息,并且只能假设这是问题的保存吗?

1 个答案:

答案 0 :(得分:2)

更改为使用groupname_ids

<%= check_box_tag "radcheck[groupname_ids][]", group.id, @radcheck.radgroups.include?(group) %>

最好停止使用HABTM。使用has_many:通过

示例USER通过user_roles

有许多角色
class User 
  has_many :user_roles
  has_many :roles, :through => :user_roles
end
class UserRole
  belongs_to :role
  belongs_to :user
end
class Role
  has_many :user_roles
  has_many :users, :through => :user_roles
end

并在连接表中添加ID。