рельсовая ассоциация - PullRequest
       1

рельсовая ассоциация

0 голосов
/ 29 сентября 2011

У меня есть следующие таблицы:

создание файлов таблиц ( id int auto_increment primary_key Имя Варчар (255) )

создать таблицу пользователей ( id int auto_increment primary_key Имя Варчар (255) )

создать таблицу администраторов ( file_id int user_id int )

Я бы хотел иметь возможность получить имена пользователей файла admin. Как мне создать ассоциацию, чтобы получить эту

Если я использую для файлов has_many: admins, то я могу сделать file.admins, чтобы получить идентификаторы и имена пользователей этих администраторов, которые я должен был бы выполнять подзапросами, используя Find. Я хотел бы избежать этого

1 Ответ

0 голосов
/ 29 сентября 2011

Для вопросов Rails, вместо того, чтобы делиться синтаксисом вашей таблицы создания базы данных, вы должны делиться миграциями вашей базы данных (просто откройте schema.rb и скопируйте / вставьте).

Похоже, у вас просто есть пользователи, некоторые из которых имеют права администратора. Самый простой способ сделать это - просто иметь столбец t.boolean :admin, :default => false в вашей пользовательской модели.

Хорошим преимуществом этого подхода является то, что Active Record предоставит вам метод User#admin?, который очень хорошо читается в условных выражениях и т. П. (Т.е. <%= render 'admin_menu' if @user.admin? %>).

Это также обходит ваши опасения по поводу дополнительных запросов, чтобы получить имена пользователей после получения перечисленных администраторов.

# app/models/file.rb
class File < ActiveRecord::Base
  belongs_to :user
end

@files = File.where(:something => true).include(:user)
@files.map(&:name) #=> ['Bob', 'Cindy', ...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...