帮我理解在轨道上加入红宝石

时间:2009-08-11 18:26:39

标签: ruby-on-rails

警告,我是ruby on rails的新手。我知道我的数据库设置不是那么好,但是我们从远程数据库中提取并存储来自该数据库的信息。

用户:
  - id
  - ......


  - id
  - user_id
  - hex_key(唯一)
  - ......

调用
  - id
  - 报告(来自车站的十六进制键)
  - 数据源ID(来自远程数据库)

通话详情
  - id
  - call_index(来自呼叫的数据源ID)

响应
  - id
  - call_index(来自呼叫的数据源ID)
  - response_id(来自远程数据库)

回复详情
  - id
  - response_index(来自回复的response_id)

就模型而言(这是我迄今为止完成的所有内容)我认为这也是我最大的问题:

用户有多个电台,通过电台拨打电话和通过电话报告 车站有很多电话 电话有很多响应,属于电台 响应属于一个电话

我一直试图解决这个问题,但我如何对此进行建模,以便我可以正确地从用户那里得到一切。这样的事情:
@ user.responses.find(:所有)
这将为该用户提供所有响应

2 个答案:

答案 0 :(得分:1)

这里有一些关于加入表格的信息。

http://www.ruby-forum.com/topic/64839

答案 1 :(得分:0)

根据数据库架构和描述,您的模型看起来像:

class User<的ActiveRecord :: Base的   has_many:站 端

类站<的ActiveRecord :: Base的   belongs_to:用户   has_many:calls,:foreign_key => “报道” 端

类Call<的ActiveRecord :: Base的   has_many:call_details,:foreign_key => “call_index” 端

这里的困难在于数据库模式不是Rails默认的(约定)。如果表没有使用ID,您可能还需要指定表的主键。

此外,我不确定您是否能够构建@ user.responses,因为响应属于呼叫,呼叫属于站,而站属于用户。这实际上是@ user.stations.calls.responses。