2012-04-05 78 views
3

//////// UPDATE奇怪關聯錯誤用的has_many:通過關聯

這是從dev的日誌輸出的時候我提交表單作爲更新

LogoCategory負載(0.3ms)SELECT logo_categories。*從 logo_categories INNER JOIN logos ON logo_categoriesid = logoslogo_category_id INNER JOIN logos_posts ON logosid = logos_postslogo_id其中logos_postspost_id = 61

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

如果你有一個應用程序的設置如下圖所示,沒有任何人有任何想法,爲什麼他們會得到這樣的錯誤。 ..我無法在任何地方找到任何信息。

的ActiveRecord :: HasManyThroughNestedAssociationsAreReadonly在PostsController#更新

不能修改協會的帖子#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(ID,logo_id,logo_category_id), logo_categories(ID)

我得到的錯誤,當我嘗試只保存後模型的_form時我編輯帖子記錄,然後選中或取消勾選logo_category複選框。

歡迎任何想法!由於

+0

你能描述你想要完成的行爲嗎? – 2012-04-05 10:32:01

+0

我有一個職位模型,用戶可以分配任何數量的徽標(其中有大約150)。爲了避免表單變成怪物,我想把它們分成幾類(我已經完成了)。當用戶點擊一個logo_category的複選框時,它只顯示該logo_category的標誌。這樣的形式仍然可以管理。我的表單更新了選中的徽標,它只是不會記錄logo_categories。 – 3quid 2012-04-05 10:51:18

回答

1

嘗試:

post.rb

has_and_belongs_to_many :logos 

標誌。RB

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'。 – 2012-04-05 10:30:08

+0

@Vik - 我的兩個模型都已經有了這些關聯。我已經添加了開發者。我提交更新時得到的日誌輸出 – 3quid 2012-04-05 10:41:14

+0

@ZekeTemplin logos_posts表包含以下列(如果多數民衆贊成你是什麼意思?)id,logo_id,post_id,logo_category_id,created_at&updated_at – 3quid 2012-04-05 10:43:27