Переопределение имени модели отношения has_many - PullRequest
4 голосов
/ 07 мая 2011

Было бы неплохо, если бы был более элегантный способ сделать это, учитывая следующие модели:

@forum_topic = ForumTopic.find(1)
@forum_topic.forum_sub_topics.each do |fst|  #it would be nicer if one could just type @forum_topic.sub_topics.each...
  #
end

Кажется излишним включать forum_ перед sub_topics, потому что я знаю, что имею делос форумной темой.Я мог бы изменить имя таблицы / модели на SubTopic, но это немного обобщенно и может появиться где-нибудь в приложении. Есть ли способ переопределить имя методов, созданных в ForumTopic для ассоциации has_many?

Модели:

class ForumTopic...
  has_many :forum_sub_topics
end

class ForumSubTopic...
end

Ах, ответ здесь.Спасибо!:) http://guides.rubyonrails.org/association_basics.html

Ответы [ 2 ]

7 голосов
/ 07 мая 2011

Попробуйте это:

has_many :sub_topics, :class_name => "ForumSubTopic"
3 голосов
/ 07 мая 2011

Да, вы можете указать любое имя ассоциации, которое хотите, и при этом указать, что оно должно использовать ваш ForumSubTopic класс:

class ForumTopic
  has_many :sub_topics, :class_name => "ForumSubTopic", :foreign_key => "forum_sub_topic_id"
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...