Имеет и принадлежит многим отношения с несколькими базами данных

Я нахожу Лучший Ответ с небольшим редактированием

 XmlDocument doc = new XmlDocument();
            doc.Load(path);
            XmlNodeList elemList = doc.GetElementsByTagName("setting");
            for (int i = 0; i < elemList.Count; i++)
            {
                if (elemList[i].Attributes["name"].Value == "UserName")
                {
                    textBox1.Text += elemList[i].InnerText;
                }
            }

7
задан Steropes 8 October 2008 в 20:03
поделиться

3 ответа

Имеет и принадлежит многим, является старым, неуклюжим, и проблематичным. Я рекомендую использовать has_many вместо этого. Можно указать таблицу отношений с ": через" опцию; просто выберите, в какой базе данных Вы хотите, чтобы это находилось и создало модель для представления его. http://apidock.com/rails/ActiveRecord/Associations/ClassMethods/has_many

5
ответ дан 6 December 2019 в 21:21
поделиться

Если данные компаний не изменяются очень часто, возможно, Вы могли бы синхронизировать данные в базу данных полномочий, то сделать Ваше соединение естественно. CMS, который я наследовал, делает что-то как этот, где аутентификация пользователя находится в своей собственной базе данных, и полномочия и такой все хранятся там, и учетные записи пользователей являются synch'd к локальной базе данных для каждого сайта. Таким образом, учетные записи пользователей могли быть совместно использованы (специально для администрирования) через несколько сайтов с 1 входом в систему.

Может не быть лучшим, потому что синхронизация включена. Идеально необходимо просто хранить данные компании в дб полномочий, если Вы не можете выгнать полномочия с квартиры. Если, конечно, Вы не присоединяетесь на компании в другом месте.

1
ответ дан 6 December 2019 в 21:21
поделиться

Интересный вопрос. Для пользы моей собственной ссылки позвольте мне попытаться суммировать решение, предложенное в книге Рецепта направляющих в контексте этого вопроса.

1) Сначала добавьте в database.yml

permissions:
  adapter: mysql
  database: permissions
  username: root
  password: 
  socket: /tmp/mysql.sock

2) Сделайте модель Permission для вызова внешней базы данных

class Permission < ActiveRecord::Base

  establish_connection :permissions

end 

3) Создайте (перемещают) таблицу Permission Reference со столбцом Permission Id

4) Используйте модель PermissionReference в качестве ссылки на модель Permission

class PermissionReference < ActiveRecord::Base

  belongs_to :permission
  has_and_belongs_to_many :companies,
                          :join_table => 'companies_permissions',
                          :foreign_key => 'permission_id'

end

5) Наконец ассоциированная компания к Разрешению

class Company < ActiveRecord::Base

  has_and_belongs_to_many :permissions, 
                          :class_name => 'PermissionReference', 
                          :join_table => 'companies_permissions', 
                          :association_foreign_key => 'permission_id'

end

Вы могли бы хотеть рассмотреть рефакторинг путем разделения на подклассы моделей, который называет внешнюю базу данных

class External < ActiveRecord::Base

  self.abstract_class = true
  establish_connection :permissions

end

class Permission < External
end
6
ответ дан 6 December 2019 в 21:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: