Rails 小白提问:关于表关联的

526699159 · 2012年04月02日 · 最后由 blogbin 回复于 2012年04月07日 · 2809 次阅读

看了表关联部分想问下 表是我自己想好了逻辑结构再在 model 里写 has_xxx 和 belong_to 之后让 rails 根据我建好的表自己去对应,还是我写好关联 rails 会自动给我建符合规定的表呢?:)

不要去思考表的结构,直接思考模型之间的关系。 然后根据模型关系来创建模型,这个时候一起创建表。

先创建好模型之间的关系 再创建符合关系的表 再把每个表除了刚才的主键外键之外缺少的字段手动添加上就行了吗?:)

rails g model xxx title:string xxx:string 的时候会一起建表的呀

嗯?建脚手架的时候可以建表这么建 model 的时候也可以建表 =。=我完全被 rails 里的关联弄迷糊了

早上试着操作了一下表的一对一关联:) 创建了 students 表 id(设置为主键,唯一) name(text) 创建了 cards 表 id(设置为主键,唯一) name(text) student_id(设置为外键关联到 students 表的 id 主键) -.-以上都是手动的

再在 model 中添加代码

class Student < ActiveRecord::Base
  has_one :card
end

class Card < ActiveRecord::Base  #手动加的model文件
  belongs_to :student
end

最后在页面访问:

<td><%= student.card.name%></td> 

但是报错:

NameError in Students#index 
Showing C:/Documents and Settings/Administrator/myweb/app/views/students/index.html.erb where line #22 raised: 
uninitialized constant Student::Card

Extracted source (around line #22): 
21:     <td><%= student.name%></td> 
22:     <td><%= student.card.name%></td> 
23:     <td><%= link_to '详细', student %></td>
24:     <td><%= link_to '编辑', edit_student_path(student) %></td>
25:     <td><%= link_to '删除', student, confirm: '确定删除吗?', method: :delete %></td>

我以上的操作还不足以使两张表关联上吗:) 求指教

我的 student 用了指令 rails generate scaffold Student 那是不是 card 也得 rails generate scaffold Card 呢 混乱了=。=

class Card < ActiveRecord::Base #手动加的 model 文件 belongs_to :student end 放在那个目录呢?和 stundent.rb 同目录么?

需要 登录 后方可回复, 如果你还没有账号请 注册新账号