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
...
È stato utile?

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.

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