在控制台中,我的查询工作正常:
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 |
+-------------+---------------------------+----------+----+
这让我分心了
我的模型中有完全正确的信息,并且只能假设这是问题的保存吗?
答案 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。