[问题] 多张表的串接

楼主: ireullin (raison detre)   2014-09-16 19:28:01
我想将三张表串接起来
可是发生了以下的错误
请问我有那里没有做对吗
资料表的串接是否有其他的作法
感觉这种方式多张表串接的时候有点麻烦
# 错误讯息
http://ppt.cc/nev0
#schema.rb
ActiveRecord::Schema.define(version: 20140916095516) do
create_table "categories", force: true do |t|
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "histories", force: true do |t|
t.integer "item_id"
t.integer "price"
t.date "expend_at"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "items", force: true do |t|
t.integer "category_id"
t.string "name"
t.datetime "created_at"
t.datetime "updated_at"
end
end
# model
class History < ActiveRecord::Base
belongs_to :item
belongs_to :category
end
class Item < ActiveRecord::Base
belongs_to :category
has_many :history
end
class Category < ActiveRecord::Base
has_many :item
has_many :history, :through => :item
end
# controller
class HistoryController < ApplicationController
def index
@histories = History.joins(:item).joins(:category).all
end
end
#view
<tbody>
<% @histories.each do |history| %>
<tr>
<td><%= history.id %></td>
<td><%= history.category.name %></td>
<td><%= history.item.name %></td>
<td><%= history.price %></td>
<td><%= history.expend_date %></td>
<td><%= history.created_at %></td>
<td><%= history.updated_at %></td>
</tr>
<% end %>
</tbody>
作者: goodplace (hello)   2014-09-16 22:27:00
你忘了把foreign key加进table里了
作者: mars90226 (火星人)   2014-09-16 23:38:00
应该要history.item.category吧?
楼主: ireullin (raison detre)   2014-09-17 11:50:00
foreign key的部分可以讲详细点吗对这部分不是很了解,谢谢
作者: goodplace (hello)   2014-09-17 21:39:00
你要把category_id加进histories table里
楼主: ireullin (raison detre)   2014-09-18 09:49:00
history.item.category.name不行耶我是希望透过item这张表去关联history与category的关系在history中加入category_id比较不符合我的期望
作者: goodplace (hello)   2014-09-21 23:06:00
仔细看了一下 发现你的model宣告根本不对has_many后面要加复数型 ex: has_many :historiesguides.rubyonrails.org/association_basics.html把上面那个连结网页看一看 就知道要怎么改了

Links booklink

Contact Us: admin [ a t ] ucptt.com