警告,我是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(:所有)
这将为该用户提供所有响应
答案 0 :(得分:1)
这里有一些关于加入表格的信息。
答案 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。