Domanda

Sono nuovo di Rails e cercando di capire il modo in cui costruire modelli 'complessi' (e le loro associazioni) utilizzando gli strumenti a nostra disposizione in Rails. immaginare rapidamente il seguente scenario di esempio: Users sono un membro della One Racing Team. Gli utenti possono creare e Cars Schedules. Queste vetture hanno Drivers, livelli Fuel, Engines e Wheels. Questi Wheels hanno Tires, Hubs e MilesDriven. Si ottiene l'idea ...

In considerazione tutti gli avvertimenti circa la nidificazione solo 1 livello profondo ... I ancora lotta con il modo di essere riposante e Rails-y e presentare un'interfaccia utente che consente a un utente di costruire un Car con Tires.

So che abbiamo un Session & Cookie a nostra disposizione come campi così come nascosti. Quindi utente accede ... ed è indirizzato alla loro pagina squadra teams(current_user.team_id). Poi vogliono creare un Car. questo rotte per new_team_car_path(current_user.team_id) dove poter costruire una macchina ... ora voglio aggiungere una Ruota a questa macchina ... così fa questa strada a new_team_car_wheel_path(current_user.team_id, car_id), ecc, ecc ...? Io credo di no ... Ma, qual è il modo Rail-y?

Inoltre, come tutto costruito sarà associato, in ultima analisi, ad una squadra (e utente) è meglio 'carry' il team_id e / o associazione user_id tutta la strada fino alla Tire o è ragionevole interrogare il Team seguendo le associazioni della gerarchia in fase di esecuzione?

Sono sicuro che questo è roba di base, ma newbness mi ha confuso su come approccio migliore è ...

È stato utile?

Soluzione

Non c'è una risposta univoca a questa domanda. Lei ha citato utilizzando le variabili di sessione e campi nascosti - quelli sono gli approcci praticabili, e la decisione dovrà essere in base alle esigenze specifiche. Il fatto che si stanno lottando per trovare la risposta migliore è un buon segno, nel senso che vi mostra sono disposti a prendere in considerazione alternative.

In questo caso si ha una gamba perché non c'è bisogno di passare le informazioni relative all'utente o delle sue associazioni nella URL, dal momento che il codice di autorizzazione rende già disponibili in th controllore. Così mi piacerebbe cadere l'utente e il team di ID dal params e accedervi da current_user:

# GET / auto /: car_id / ruote / nuova

def new
  @car = Car.find(params[:car_id])
  @wheel = @car.wheels.build
end

e

# POST / auto /: car_id / ruote

def create
  @user = current_user
  @team = @user.team
  @car = Car.find(params[:car_id]
  @wheel = @car.wheels.build(params[:car][:wheel])
  ...
end

L'unico problema è se è necessario per consentire a un utente di accedere Car di un altro utente. In tal caso un campo di modulo nascosto (o un menu a discesa) per selezionare l'utente dovrebbe funzionare. Al contrario, potrebbe essere necessario un controllo di autorizzazione per impedire agli utenti di accedere vicenda di `Car '

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top