Ассоциация направляющих для двух внешних ключей для той же таблицы в одной таблице

Повышение к виду C++ подобной Платформы.NET, к C#, но возможно в меньшем масштабе.

19
задан Sander Rijken 11 December 2009 в 13:32
поделиться

2 ответа

Большая часть магии Rails исходит из соглашения, а не конфигурации. Называя вещи в соответствии с рекомендациями, Rails может угадать большинство параметров конфигурации. ActiveRecord :: Associations не является исключением.

Первый аргумент любой ActiveRecord Association - это имя, которое будет использоваться в модели. Обычно это название другой модели, таково соглашение. По умолчанию имя класса - это единственное число имени ассоциации в верблюжьем регистре. Внешний ключ по умолчанию в ассоциации - это имя ассоциации с добавлением "_id". Если название вашей ассоциации не Чтобы сопоставить имя класса или внешний ключ по этим шаблонам, вам нужно будет указать их в качестве параметров.

Это сделает то, что вы хотите:

class NewModel
  belongs_to :base1, :class_name => "BaseModel"
  belongs_to :base2, :class_name => "BaseModel"
end

Лично я бы дал ассоциациям более описательные имена, чем base1 и base2. Примерно так:

Таблица рейтингов: id, rater_id, Rated_id, rating

class Rating
  belongs_to :rater, :class_name => "User"
  belongs_to :rated_user, :class_name => "User", :foreign_key => "rated_id"
end

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

31
ответ дан 30 November 2019 в 04:03
поделиться

Символ, переданный методу own_to , должен быть единственным именем другой модели. Итак, для вашего примера это будет:

class NewModel < ActiveRecord::Base 
  belongs_to :base_model 
end 
0
ответ дан 30 November 2019 в 04:03
поделиться
Другие вопросы по тегам:

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