Я обновляю устаревший проект до Rails 3.2.1, но у меня возникают проблемы с новым интерфейсом запросов ActiveRecord, особенно с новым методом join
.
У меня есть User
модель, которой принадлежит множество Podcast
s
class User < ActiveRecord::Base
has_many :podcasts
end
class Podcast < ActiveRecord::Base
belongs_to :user
end
Моя проблема в том, что join
работает только при вызове со стороны belongs_to
.
irb(main):005:0> Podcast.joins :user
Podcast Load (1.4ms) SELECT "podcasts".* FROM "podcasts" INNER JOIN "users" ON "users"."id" = "podcasts"."user_id"
=> []
irb(main):006:0> User.joins :podcast
ActiveRecord::ConfigurationError: Association named 'podcast' was not found; perhaps you misspelled it?
Странно, но все работает, если я поменяю отношение на has_one
.
Соответствующая часть моего schema.rb
create_table "podcasts", :force => true do |t|
t.string "name", :default => "", :null => false
t.string "url", :default => "", :null => false
t.text "description"
t.datetime "last_updated"
t.boolean "active", :default => true
t.integer "user_id"
end
Базовая БД: PostgreSQL 9.1.2 , а ruby - 1.8.7-p357 .
Это предполагаемое поведение?
Я знаю, что могу передать SQL в join
, но это будет значительным шагом назад с точки зрения читабельности.