Ответ 1
Вот несколько учебных пособий, которые должны помочь. В основном существует два подхода для работы много-ко-многим: has_and_belongs_to_many или has_many: через (рекомендуется).
ссылки:
У меня две модели: пользователи и группы. Каждая группа может иметь много пользователей, и каждый пользователь может быть во многих группах.
В настоящее время у меня есть что-то простое:
Пользователь:
has_many :groups
Группа
has_many :users
Итак, у меня есть таблица groups_users, которая просто создает строки с group_id и user_id. Я хочу добавить к этому еще один столбец (что у меня есть), вопрос в том, как мне получить доступ к нему из модели без использования пользовательского вызова SQL? В групповой модели я могу пойти self.users, и у пользователя я могу пойти self.groups
Есть ли способ изменить третий столбец в этой таблице из пользовательской модели?
Извините, если это сбивает с толку, сообщите об этом
Вот несколько учебных пособий, которые должны помочь. В основном существует два подхода для работы много-ко-многим: has_and_belongs_to_many или has_many: через (рекомендуется).
ссылки:
В Rails 3 вы хотите создать таблицу соединений для многих-многих отношений, используя множественные имена таблиц, которые вы хотите присоединиться в алфавитном порядке. Поэтому в этом случае это будет groups_users
.
class GroupsUser < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class User < ActiveRecord::Base
has_many :groups_users
has_many :groups, :through => :groups_users
end
class Group < ActiveRecord::Base
has_many :groups_users
has_many :users, :through => :groups_users
end
Я [добавил] еще один столбец в [
users_groups
]... Вопрос в том, как сделать Я обращаюсь к нему с модели без использования пользовательский вызов SQL?
Похоже, вы хотите получить доступ к столбцу таблицы user_groups
, вызвав метод в вашей модели User
или вашей модели Group
.
Некоторые предложения:
Я бы назвал таблицу "user_groups
" для работы с ожиданиями плюрализации ActiveRecord, но я не уверен, что это важно.
Следуя совету Дэйва, вы хотите настроить все, используя технику "has_many :through
"...
# Declare a Model based on the many-to-many linking table.
class UserGroup < ActiveRecord::Base
belongs_to :user
belongs_to :group
end
class User < ActiveRecord::Base
has_many :user_groups
has_many :groups, :through => :user_groups
end
class Group < ActiveRecord::Base
has_many :user_groups
has_many :users, :through => :user_groups
end
Есть ли способ изменить третий столбец в этой таблице из пользовательской модели?
Это немного неясно, но имейте в виду, что каждый User
может иметь много UserGroups
. Поэтому, если вы хотите изменить этот третий столбец, вам нужно будет найти тот, который вы ищете.