2011-01-19 101 views
0

親愛的開發者,我有一些問題Rails的模型 這裏是我的SQL表Ruby on Rails的模型關聯nubie問題

create_table "areas", :primary_key => "ndc", :force => true do |t| 
    t.string "townname", :limit => 256, :null => false 
    end 

    create_table "books", :primary_key => "ndc", :force => true do |t| 
    t.integer "booked", :null => false 
    t.integer "free", :null => false 
    end 



class Book < ActiveRecord::Base 
    self.primary_key = "ndc" 
    has_one :area, :foreign_key => 'ndc' 
end 

class Area < ActiveRecord::Base 
    self.primary_key = "ndc" 
    belongs_to :book , :foreign_key => 'ndc' 
end 

在控制器我有這樣的代碼

@books = Book.paginate :page => params[:page] || 1, :per_page => 10 
    @books.each do |booking| 
     p booking.area 
     p booking 

    end 

在生產模式沒有按」 t工作,booking.area是無對象。它可能是什麼?

區becames零如果config.cache_classes =真

所以booking.area產生這樣的查詢 如果cashe_classes =真
SELECT areas。* FROM areas WHERE(areas .ndc = NULL)LIMIT 1 但沒有兌現類 SELECT areas * FROM areas WHERE(areas .ndc = 30)LIMIT 1

通過去除belongs_to的修正:書,:foreign_key => 'NDC' F ROM區類。

+0

我向book類添加了self.primary_key =「ndc」,並且協會似乎現在正在工作。謝謝 – Fivell 2011-01-19 15:52:54

+1

是的,任何時候,如果您爲主鍵字段使用「id」以外的名稱,則必須在您的ActiveRecord類中插入一條指定該主鍵的語句。 – 2011-01-19 15:58:42

回答

2

您的areas表需要一個book_id整數字段來匹配書本表的主鍵。