рельсы 3 MySQL отношения - PullRequest
       2

рельсы 3 MySQL отношения

0 голосов
/ 10 августа 2011

Я работаю с rails 3 и MySQL с 6 месяцев, но до сих пор не имею представления о том, как мы можем реализовать столбец "string" в качестве первичного ключа?Я предполагаю, что это не позволяет нецелое поле быть первичным ключом для таблицы в MySQL.Например,если у меня есть таблица клиентов, у которой в качестве первичного ключа и таблицы продуктов есть строка customer_code: string, которая ссылается на таблицу клиентов через поле customer_code, т.е.Как я могу реализовать эти отношения в рельсах 3?Может кто-нибудь предложить мне какой-нибудь подходящий метод для реализации этих отношений?

Ответы [ 3 ]

0 голосов
/ 10 августа 2011

Полагаю, у вас есть две модели: Costumer и Products.Так как насчет этого решения?

class Costumer < AR::Base
  set_primary_key 'code'

  has_many :products, :foreign_key => :costumer_code

  validates :code, :presence => true
end

class Product < AR::Base
  belongs_to :costumer, :foreign_key => :costumer_code
end

На вопрос, что вы должны убедиться, что код клиента установлен правильно при создании, потому что это не автоинкремент, как первичный ключ по умолчанию id.before_create обратный вызов поможет вам.

0 голосов
/ 10 августа 2011
class Product < ActiveRecord::Base
  belongs_to :customer, :foreign_key => :customer_code, :primary_key => :customer_code
end
0 голосов
/ 10 августа 2011

Я бы все упростил и придерживался стандартных соглашений по рельсам - используйте поле автоматического идентификатора для ваших ключей.

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

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