2011-11-11 31 views
5

stores için iç içe form categories var ve mağaza modelinde attr_accessible olarak listelenmesini sağla. Ama yine de aşağıdaki hata almaya devam:Raylar 3.1 - Korunan öznitelikleri atayamaz (attr_accessible öğesine eklenmiş olsa bile)

WARNING: Can't mass-assign protected attributes: category_ids 

Ben mağaza modelinde attr_accessible tüm varyasyonlarını denedim: Bunlardan

attr_accessible :categories 
attr_accessible :category 
attr_accessible :category_id 
attr_accessible :category_ids 

Yok çalışır! Her iki model de has_and_belongs_to_many'dır (ve kategoriler_storees adlı bir birleştirme tablosuna sahiptir).

Herhangi bir tavsiye büyük ölçüde takdir edilecektir (kafamı iki gün boyunca duvara çarpıyorum). Ben (oldukça gereksiz ve raylar hemen üstünde sorununa uyulması halinde gerekli değildir) bir geçici düzeltme uyguladık

GÜNCELLEME. Ben ActiveAdmin için create yöntemi üzerine yazma ve dernek verileri eklemek için döngü tarafından düzelttim: Bir birleştirme tablo olarak adlandırılan categories_stores varsa

controller do 
    def update 
     @store = store.find(params[:id]) 
     if @store.update_attributes(params[:store]) 
     @store.categories.delete_all 
     params[:store][:category_ids].each do |category_id| 
      @store.categories << Category.find(category_id) unless category_id.blank? 
     end 
     redirect_to :action => :index 
     else 
     redirect_to :action => :edit, :notice => "Something f'ed up" 
     end 
    end 

    end 
+0

Hatta modelleri ve hala hiçbir hareket halindeyken hem attr_accessible çıkarmadan denedim! – Hopstream

cevap

4

inanıyorum atamalarınızın çizgisinde daha olacağını:

Kategoriler modelinde benzer bir kurulumla
class Store 

    has_many :categories, :through => :categories_stores 

. Eğer diyelim ki, bir mağaza oluştururken ve/oluşturmanız mağaza için kategoriler eklemek isterseniz formda

, o zaman da eklemek gerekebilir:

accepts_nested_attributes_for :categories_stores 

eklemek mümkün bu masa.

Burada iç içe özellikler hakkında daha fazla bilgi edinebilirsiniz: http://api.rubyonrails.org/classes/ActiveRecord/NestedAttributes/ClassMethods.html

+0

Ben de aynı sorunu yaşadım ve bulabildiğim tek çözüm Stephanie'nin önerdiği şeydi. Örneğin. has_many: ile geçiş yapın ve birleştirme birleşimi için CRUD iç içe öznitelik özniteliğini (store_categories) yönetin. – cailinanne

İlgili konular