ID compilazione automatica in una forma con una relazione
-
22-08-2019 - |
Domanda
ho creato un blog, avrà i messaggi, ei messaggi vengono creati dagli utenti. Ho già un sistema di login nel mio blog. E ho fatto la relazione tra un utente ed i suoi messaggi. Ora, quando voglio aggiungere un nuovo post voglio Rails per riempire automaticamente il campo user_id.
Devo aggiungere un campo nascosto e aggiungere l'user_id dalla sessione in cui ho salvato altrove?
O fa Ruby on Rails hanno il proprio modo di trattare con le relazioni e con gli ID?
@EDIT:
del modello:
class Post < ActiveRecord::Base
validates_presence_of :subject, :body
has_many :comments
belongs_to :user
end
il controller:
....
def new
@post = Post.new
respond_to do |format|
format.html # new.html.erb
format.xml { render :xml => @post }
end
end
...
Soluzione
Se si vuole garantire che i posti di un blogger sono associati con l'utente corretto, allora non usare un campo di modulo per questo a tutti, dal momento che i loro valori possono essere modificati dall'utente finale. Meglio fare affidamento sul sistema di login che avete e fare qualcosa del genere quando il modulo viene inviato blog-post:
def create
@post = current_user.posts.build(params[:post])
if @post.save
...
else
...
end
end
Questo è supponendo che si dispone di un metodo current_user
, forse in application.rb, che recupera l'utente corrente tramite il sistema di login. Forse qualcosa di simile:
def current_user
@current_user ||= User.find(session[:user_id])
end
e anche supponendo che avete messo in has_many :posts
User.rb.