Повышение к виду C++ подобной Платформы.NET, к C#, но возможно в меньшем масштабе.
Большая часть магии 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
Можно было бы использовать другой пример, но он был выбран, чтобы выделить, когда необходим параметр внешнего ключа.
Символ, переданный методу own_to
, должен быть единственным именем другой модели. Итак, для вашего примера это будет:
class NewModel < ActiveRecord::Base
belongs_to :base_model
end