2012-04-05 2 views
3

//////// UPDATEСтранная ошибка ассоциации с has_many: через ассоциацию

Это выход из журнала Дев, когда я отправить форму как обновление

LogoCategory Нагрузка (0,3 мс) ВЫБРАТЬ logo_categories. * ОТ logo_categories ВНУТРЕННЯЯ ПОДДЕРЖКА logos ON logo_categories. id = logos. logo_category_id INNER JOIN logos_posts ON logos. id = logos_posts. logo_id WHERE logos_posts. post_id = 61

//////////////

Если у вас была установка приложения, как показано ниже, есть ли какие-либо идеи, почему они получили бы такую ​​ошибку. .. Я нигде не могу найти информацию об этом.

ActiveRecord :: HasManyThroughNestedAssociationsAreReadonly в PostsController # обновление

Невозможно изменить ассоциации 'Post # logo_categories', потому что он идет более чем через один другой ассоциации.

post.rb

has_and_belongs_to_many :logos 
has_many :logo_categories, :through => :logos 

logo.rb

belongs_to :logo_category 
    has_and_belongs_to_many :posts 

logo_category.rb

has_many :logos 
has_and_belongs_to_many :posts 

и мои таблицы ...

сообщений (ID), логотипы (ID), logos_posts (идентификатор, logo_id, logo_category_id), logo_categories (ID)

Я получаю ошибку, когда я пытаюсь сохранить _form Почте модели ТОЛЬКО при Я редактирую запись, и я проверяю или снимаю флажок logo_category.

Любые идеи приветствуются! Благодаря

+0

Можете ли вы описать поведение, которое вы пытаетесь выполнить? –

+0

У меня есть модель сообщений, которую пользователь может присвоить любому количеству логотипов (которых около 150). Чтобы избежать превращения формы в монстра, я хочу разбить их на категории (которые я сделал). Когда пользователь нажимает флажок для логотипа, он отображает только логотипы для этой логотипа. Таким образом, форма остается управляемой. Моя форма обновляет логотипы, которые выбраны просто отлично, он просто не будет записывать логотип_категории. – 3quid

ответ

1

Try:

post.rb

has_and_belongs_to_many :logos 

логотип.гь

has_and_belongs_to_many :posts 

EDITED:

миграция Ваш 'logo_categories' выглядит следующим образом:

create_table :logo_categories do |t| 
    t.references :logo 
    t.references :post 
    t.timestamps 
    end 

Посмотрите на ссылку, это поможет вам использовать HABTM:

http://asciicasts.com/episodes/17-habtm-checkboxes

http://ramblings.gibberishcode.net/archives/rails-has-and-belongs-to-many-habtm-demystified/17

+0

Также убедитесь, что таблица соединения logos_posts фактически ссылается на 'posts_id'. –

+0

@Vik - обе мои модели уже имеют эти ассоциации. Я добавил разработчика. log output, который я получаю при отправке обновления – 3quid

+0

@ZekeTemplin в таблице logos_posts есть следующие столбцы (если это то, что вы имеете в виду?) id, logo_id, post_id, logo_category_id, created_at & updated_at – 3quid

Смежные вопросы