2013-05-07 10 views
5

w rails 2.3.11 mam poniżej w modeluNie można przypisać masę chroniony atrybuty attr_accessor i attr_accessible

attr_accessor :person_id 

i kontroler

@project.person_id = current_user.id 

Teraz jestem przekształcenie tego w rails 3.2.11 i jestem otrzymanie

więc zmieniłem model, usunąłem :person_id od attr_accessor i dodaj poniżej linii

attr_accessible :person_id 

ale jestem uisng person_id w sterowniku, to jest tutaj

@project.person_id = current_user.id 

jestem coraz to teraz

NoMethodError in ProjectsController#create 

undefined method `person_id=' for #<Project:0x19cc51a> 

jakiś pomysł lub pomóc, jak czy mogę to naprawić? Jak mogę obsłużyć zarówno attr_accessor & attr_accessible?

+0

umieść je w obu 'attr_accessible: person_id'; 'attr_accessor: person_id' –

+0

@ShawnBalestracci, jeśli umieszczam zarówno' attr_accessible: person_id'; 'attr_accessor: id_osobisty', otrzymuję komunikat "Nie mogę masowo przypisać atrybutów chronionych: id_osobisty" –

+1

Błąd przypisania masy nie pochodzi z tej linii: '@project.person_id = current_user.id', ponieważ nie jest to masowe zadanie. – Arjan

Odpowiedz

5

attr_accessor :person_id i attr_accessible :person_id to nie to samo.

attr_accessor to metoda Ruby. W skrócie jego skrót dla metod:

def person_id 
    @person_id 
end 

def person_id=(value) 
    @person_id = value 
end 

attr_accessible jest Szyny metoda. Który dostaje listę atrybutów, które mogą być przypisane masowo. Możesz przeczytać o .

Tak więc w twoim przypadku potrzebujesz ich obu.

attr_accessor :person_id 
attr_accessible :person_id 
+0

jeśli umieszczam oba attr_accessible: person_id; attr_accessor: person_id, otrzymuję Nie mogę masowo przypisać chronionych atrybutów: person_id –

+0

Hm. sprawdź 'config.active_record.whitelist_attributes = true' w twoim' application.rb'. I spróbuj grać z 'true' /' false' – ck3g

Powiązane problemy