覆盖has_many关系的模型名称

时间:2011-05-07 05:56:42

标签: 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

在sub_topics前面包含forum_似乎是多余的,因为我知道我正在处理一个forum_topic。我可以将表/模型的名称更改为SubTopic,但这有点通用,可能会出现在应用程序的某个位置。 有没有办法覆盖在ForumTopic上为has_many关联创建的方法的名称?

型号:

class ForumTopic...
  has_many :forum_sub_topics
end

class ForumSubTopic...
end
答案答案就在这里啊。谢谢! :) http://guides.rubyonrails.org/association_basics.html

2 个答案:

答案 0 :(得分:7)

试试这个:

has_many :sub_topics, :class_name => "ForumSubTopic"

答案 1 :(得分:3)

是的,您可以指定所需的任何关联名称,并仍然告诉它使用您的ForumSubTopic类:

class ForumTopic
  has_many :sub_topics, :class_name => "ForumSubTopic", :foreign_key => "forum_sub_topic_id"
end