Ho un utente e un modello di profilo. Un utente può avere molti profili. Ho bisogno di accedere a una sola informazione dalla sezione profili (cioè il numero di telefono) nel mio modello utente durante il processo di creazione dell'utente. Quindi sto cercando di farlo attraverso attr_accessible
. Il mio user.rb ha questo aspetto.Moduli annidati in rotaia - accesso all'attributo in has_many relation
has_many :profiles
attr_accessible :handle, :email, :password, :profile_mobile_number
attr_accessor : :profile_mobile_number
Il problema che sto affrontando è che quando provo a chiamare il metodo getter profile_mobile_number in un metodo in user.rb (il metodo è privato, anche se penso che non importa), I' m ottenendo un valore nullo. Io uso il seguente nella mia forma utenti/new.html.erb
La mia domanda è che cosa è il modo giusto per fare questo? Dovrei usare <% f.fields_for :profile do |ff| -%>
o <% f.fields_for :profiles do |ff| -%>
(notare che il secondo è plurale). Quando uso il plurale: profili, non vedo nemmeno i campi sul modulo. Cosa mi manca qui? E qual è il tempo che deve essere usato nel modello user.rb? : profile_phone_number o: profiles_phone_number? Grazie.
Come ho detto, stavo usando f.fields_for: profili e i campi nel modulo non venivano visualizzati. Risulta che ho dovuto aggiungere @ user.profiles.build nel controller. Ma ora non sono in grado di avere sia attr_accessible che accept_nested_attributes_for in user.rb. Il primo ha la precedenza su quest'ultimo. Ma voglio avere attr_accesible per gli attributi del modello utente mentre NON limita l'accesso agli attributi del modello del profilo. Qualche idea? Grazie. –