作者ireullin (raison detre)
看板Ruby
標題[問題] 多張表的串接
時間Tue Sep 16 19:28:01 2014
我想將三張表串接起來
可是發生了以下的錯誤
請問我有那裡沒有做對嗎
資料表的串接是否有其他的作法
感覺這種方式多張表串接的時候有點麻煩
# 錯誤訊息
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>
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 111.250.2.32
※ 文章網址: http://webptt.com/m.aspx?n=bbs/Ruby/M.1410866884.A.22B.html
1F:→ goodplace: 你忘了把foreign key加進table裡了 09/16 22:27
2F:→ mars90226: 應該要history.item.category吧? 09/16 23:38
3F:→ ireullin: foreign key的部分可以講詳細點嗎 09/17 11:50
4F:→ ireullin: 對這部分不是很了解,謝謝 09/17 11:50
5F:→ goodplace: 你要把category_id加進histories table裡 09/17 21:39
6F:→ ireullin: history.item.category.name不行耶 09/18 09:49
7F:→ ireullin: 我是希望透過item這張表去關聯history與category的關係 09/18 09:50
8F:→ ireullin: 在history中加入category_id比較不符合我的期望 09/18 09:51
9F:→ goodplace: 仔細看了一下 發現你的model宣告根本不對 09/21 23:06
10F:→ goodplace: has_many後面要加複數型 ex: has_many :histories 09/21 23:07
11F:→ goodplace: guides.rubyonrails.org/association_basics.html 09/21 23:08
12F:→ goodplace: 把上面那個連結網頁看一看 就知道要怎麼改了 09/21 23:08