0

所以我找到了很多关于这些主题的帖子,但没有一个回答我(可能是非常新手)的问题。这个月我是 Rails 的新手,但我已经在 OOL 中编程了一段时间。我认为我的问题可能涉及有关 Ruby on Rails 的多个主题。我不介意阅读多个博客或教程来平息这一切。

我有 4 个位置模型。每个都有一个“名称”属性。

  1. 国家(has_many :states)
  2. 州(belongs_to :country has_many :counties has_many :cities, :through => :counties)
  3. 县 (belongs_to :state has_many :cities)
  4. 城市

我的最终目标是为城市、县、州创建一个自动填充文本框。用户将选择一个国家来缩小结果范围。例如,用户输入“SA”,自动完成文本框将显示:

  1. 堪萨斯
  2. 阿肯色州
  3. 加利福尼亚州圣克拉拉县
  4. 加利福尼亚州圣克拉拉县圣何塞
  5. 等等

所以我可以轻松地返回我想要显示的文本。每个模型都有类似的东西:

定义位置名称

// 此模型的显示名称。例如,我们希望县模型返回“加利福尼亚州圣克拉拉县”

“#{name},#{state.name}”

结尾

我试图研究的解决方案:

  1. Active Record Query Interface用于在多个表中创建一个 select 语句。我的目标是在多个模型中进行搜索,并获得一个名称包含搜索文本的对象列表。

  2. STI - 也许创建一个所有都可以继承的 Location 模型,但我在网上找不到任何包含具有不同属性的模型的基本教程。我是否“生成”一个模型,其中包含所有 5 个需要的所有字段,然后从自动生成的 .rb 文件中删除它们?我假设我将能够使用 Location.where("name like ? and country_id = ?", params[:search], params[:country_id]) 并获得适合搜索参数的所有位置的完整列表。

  3. MTI - 我看了这个,因为我不喜欢数据库中的多余列,这些列大多是空白的。例如 :country_id 只会被州使用。所以它对于所有县市等都是空的。但是所有的教程似乎都暗示 STI 会是更好的方法。

  4. 多态关联——我几个小时前才开始研究这个。我发现了一些关于 ":polymorphic => true" 的内容,并且我阅读了另一篇关于子类特性的文章。

根据 Ruby,我花了好几天的时间研究这样做的“正确”方式。我真的很想学习并整合所有 ruby​​ 所提供的东西。感谢您的任何想法!

4

1 回答 1

0

也许您也可以观看此视频以进一步发展。

http://railscasts.com/episodes/88-dynamic-select-menus

我猜你的情况一对多应该没问题。就像这个国家有很多州,相应的州有很多城市。

如我错了请纠正我 @@

于 2012-11-14T03:37:44.233 回答