** ОБНОВЛЕНИЕ: Я нашел это:
"Active Record ожидает, что промежуточные таблицы имен будут названы с объединением таблиц, к которым они присоединяются, в алфавитном порядке."
Sigh ... **
У меня есть 3 модели: изображения, видео и ключевые слова.Изображения и видео выглядят в основном одинаково, и я пытаюсь сделать для них все то же самое в отношении ключевых слов.Но добавление ключевого слова к изображению работает нормально, в то время как добавление ключевого слова в видео - нет.
keyword.rb
has_and_belongs_to_many :cases
has_and_belongs_to_many :images
has_and_belongs_to_many :videos
video.rb
has_and_belongs_to_many :keywords
image.rb
has_and_belongs_to_many :keywords
schema.rb
create_table "images_keywords", :id => false, :force => true do |t|
t.integer "image_id"
t.integer "keyword_id"
t.datetime "created_at"
t.datetime "updated_at"
end
create_table "videos_keywords", :id => false, :force => true do |t|
t.integer "video_id"
t.integer "keyword_id"
t.datetime "created_at"
t.datetime "updated_at"
end
Это работает:
images_controller.rb
@image.keywords << Keyword.new(:word => "test")
Это:
videos_controller.rb
@video.keywords << Keyword.new(:word => "test")
Дает мне эту ошибку:
ActiveRecord::StatementInvalid in VideosController#create
PGError: ERROR: relation "keywords_videos" does not exist
LINE 4: WHERE a.attrelid = '"keywords_videos"'::regclas...
^
: SELECT a.attname, format_type(a.atttypid, a.atttypmod), d.adsrc, a.attnotnull
FROM pg_attribute a LEFT JOIN pg_attrdef d
ON a.attrelid = d.adrelid AND a.attnum = d.adnum
WHERE a.attrelid = '"keywords_videos"'::regclass
AND a.attnum > 0 AND NOT a.attisdropped
ORDER BY a.attnum
Когда я проверяю консоль на предмет добавления ключевого слова к изображению, она правильно ищет "images_keywords" Почемуон ищет "ключевые слова_видео" для видео ???
Чем они отличаются?