дорогие разработчики У меня есть некоторые проблемы с 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
В производственном режиме Безразлично» т работа, бронирование.аре не нулевой объект. что это может быть?
Площадь becames ноль, если config.cache_classes = истинная
так booking.area генерирует такие запросы , если cashe_classes = истина
ВЫБОР areas
. * ОТ areas
ГДЕ (areas
.ndc = NULL) ЛИМИТ 1 , но без обналичивание классы ВЫБРАТЬ areas
* FROM areas
WHERE (areas
.ndc = 30) LIMIT 1
ОСНОВНОЙ удалением belongs_to:. книга,: foreign_key => 'NDC' ф класса.
Я добавил self.primary_key = "ndc" к классу книги и ассоциации, похоже, сейчас работает. Спасибо – Fivell
Да, в любое время, когда вы используете имя, отличное от «id» для вашего основного поля ключа, вы должны вставить инструкцию в свой класс ActiveRecord, указав этот первичный ключ. –
ok Я обновил свой вопрос – Fivell