Флажки RoR3 HABTM не сохраняются - PullRequest
1 голос
/ 14 ноября 2011

В консоли мой запрос работает нормально:

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

И запись сохранения в БД.

Когда я пытаюсь сделать это в моем представлении рельсов, оно не сохраняется.

<%= 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 содержит столбцы username и groupname

Есть предложения?

- Обновление -

Далее, чтобы ответить ниже, я добавил идентификатор в таблицу radusergroup (моя таблица соединений). В настоящее время это выглядит так:

+-------------+---------------------------+----------+----+
| 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 Ответ

2 голосов
/ 14 ноября 2011

изменить, чтобы использовать groupname_ids

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

Также лучше прекратить использование HABTM. используйте has_many: через

ПРИМЕР ПОЛЬЗОВАТЕЛЯ имеет много ролей через 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

и добавьте идентификатор в таблицу соединений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...