#ruby-on-rails #activerecord
#ruby-on-rails #activerecord
Вопрос:
Было бы неплохо, если бы существовал более элегантный способ сделать это, учитывая эти модели:
@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, потому что я знаю, что имею дело с forum_topic. Я мог бы изменить название таблицы / модели на SubTopic, но это немного обобщенно и, возможно, может появиться где-нибудь в приложении. Есть ли способ переопределить имя методов, созданных на ForumTopic для ассоциации has_many?
Модели:
class ForumTopic...
has_many :forum_sub_topics
end
class ForumSubTopic...
end
Ах, ответ прямо здесь. Спасибо! 🙂
http://guides.rubyonrails.org/association_basics.html
Ответ №1:
Попробуйте это:
has_many :sub_topics, :class_name => "ForumSubTopic"
Ссылка
ActiveRecord::Ассоциации::Методы классов has_many — смотрите в разделе Параметры
Ответ №2:
Да, вы можете указать любое желаемое имя ассоциации и по-прежнему указывать ей использовать ваш ForumSubTopic
класс:
class ForumTopic
has_many :sub_topics, :class_name => "ForumSubTopic", :foreign_key => "forum_sub_topic_id"
end