Réaliser un forum avec RoR


#1

Bonjour,

En fait je cherche surtout à integrer le model MVC, et essai de réaliser
pour cela un petit forum.

Pour l’instant j’ai 4 tables dans ma bdd: utilisateurs, forums, sujets,
messages

J’ai organisé mes données selon forums has_many sujets has_many messages

Deplus pour l’instant, en suivant le cookbook, j’ai crée un controlleur
forum, un controlleur sujet, et un controlleur message.

L’un s’occupe de lister les forums, le suivant s’occupe de lister les
sujets d’un forum, le dernier affichant les messages d’un sujet.

Mes question sont:

  • J’aimerais savoir si, et comment on peut préciser à rails que les
    utilisateurs sont inscrits au forum et postent des messages. Ceci afin
    de faciliter l’affichage d’information pour chaque message à propos de
    son auteur.

-Dans ma table sujet, je n’ai pas de champ pour le premier message. Donc
si je veux poster un nouveau sujet, je dois créer un nouveau sujet ainsi
qu’un nouveau message. Est-ce judicieux dans la mesure où j’ai 2
controlleurs differents pour les messages et les sujets. J’ai en effet
l’impression que le controlleur sujet empiète dans ce cas sur le role du
controlleur message, et que ce n’est pas dans l’esprit MVC.

-Est-ce judicieux tout betement de séparer les controleurs de cette
manière. J’aurais ptet pu faire un controlleur forum et un controlleur
sujet/message.

-Quelle est la meilleure méthode pour passer les informations de
l’arboréscence dans laquelle se trouve l’utilisateur. Pour être plus
clair, quel est le meilleur endroit pour garder l’identificateur du
forum ou du sujet dans lequel on se trouve, quand on est par exemple
dans la page de création d’une réponse à un sujet.

-Dans quels cas les paramètres sont passé par la bare d’adresse avec un
/, avec un ?, où par la méthode POST.

-Y’a t’il enfin un bon site qui pourait m’éclairer sur la signification
et l’utilisation des differents types de variables, celles avec des @,
de : … et leur utilisation avec rails.

Je suis dsl pour la longueur, et je vous remerci d’avance.


#2

salut !

qques réponses…

Deplus pour l’instant, en suivant le cookbook, j’ai crée un controlleur
forum, un controlleur sujet, et un controlleur message.

A la limite j’aurai vu ça sous un seul controleur “forum”. Un 2e
controleur
aurait pu etre admin (ce qui permettra d’ajouter et supprimer des
forums, gérer
les utilisateurs…)

  • J’aimerais savoir si, et comment on peut préciser à rails que les
    utilisateurs sont inscrits au forum et postent des messages.

message belongs_to utilisateur, et un utilisateur_id dans la table des
messages.

si tu veux faire une inscription, alors tu te crée une nouvelle entité
Inscription, avec Inscription belongs_to forum, Inscription belongs_to
utilisateur, utilisateur has_many inscriptions et forum has_many
utilisateurs.

la table inscriptions sera uniquement faite de utilisateur_id et de
forum_id

Est-ce judicieux dans la mesure où j’ai 2 controlleurs differents pour les messages et les sujets.

cf plus haut ?

-Quelle est la meilleure méthode pour passer les informations de
l’arboréscence dans laquelle se trouve l’utilisateur. Pour être plus
clair, quel est le meilleur endroit pour garder l’identificateur du
forum ou du sujet dans lequel on se trouve, quand on est par exemple
dans la page de création d’une réponse à un sujet.

je comprends pas trop ton soucis, le grand classique devrait suffire :
l’id dans
l’URL. quand on est en train d’afficher un message par exemple, l’id
suffit Ã
désigner le message, et si on veut le sujet, on fait tout simplement
message.sujet.intitule, ou l’auteur du sujet, on fait
message.sujet.auteur.nom
etc…

pour la suite, je préfère laisser parler ceux qui connaissent mieux
Rails que moi…

gUI


#3

On 2/28/07, Mun removed_email_address@domain.invalid wrote:

-Dans ma table sujet, je n’ai pas de champ pour le premier message. Donc
si je veux poster un nouveau sujet, je dois créer un nouveau sujet ainsi
qu’un nouveau message. Est-ce judicieux dans la mesure où j’ai 2
controlleurs differents pour les messages et les sujets. J’ai en effet
l’impression que le controlleur sujet empiète dans ce cas sur le role du
controlleur message, et que ce n’est pas dans l’esprit MVC.

forums(id, titre, description)
forums_messages(forum_id, message_id)
messages(id, titre, body, created_at, parent_id)

class Message < ActiveRecord::Base
acts_as_tree :order => ‘created_at’ #ou acts_as_list?
end

class Forum < ActiveRecord::Base
has_and_belongs_to_many :subjects, :class_name => ‘Message’
end

?


#4

On 2/28/07, Nicolas T. removed_email_address@domain.invalid wrote:

class Message < ActiveRecord::Base
acts_as_tree :order => ‘created_at’ #ou acts_as_list?
end
sinon il y a aussi acts_as_threaded:

http://www.railtie.net/articles/2006/02/05/rails-acts_as_threaded-plugin


#5

ONLINE JOB FAIR 2008 - WWW.JOBSINWORLD.COM
SEARCH JOBS IN OUTSIDE INDIA, KERALA, CHENNAI, MUMBAI, BANGLORE, PUNE
AND HYDRABAD
Online jobfair


#6

Jilo J. wrote:

ONLINE JOB FAIR 2008 - WWW.JOBSINWORLD.COM
SEARCH JOBS IN OUTSIDE INDIA, KERALA, CHENNAI, MUMBAI, BANGLORE, PUNE
AND HYDRABAD
http://www.jobsinworld.com


#7

Il faut croire que nos amis d’andreas-s.net ont un petit problème de
spam…

2007/12/4, Jilo J. removed_email_address@domain.invalid:


#8

Bon, j’ai tout mis dans un seul controlleur pour essayer.

Je me suis même aventuré à utiliser la même méthode pour la création
d’un nouveau sujet et celle d’une réponse en faisant (voire suite). Ya
un peu de gymnastique (pour mon niveau), ben J’ai rien eut à débuguer.
Des fois, il me manque une méthode, j’en éssai une, et tout marche du
premier coup, c’est vraiment surprenant !!

Je venais de commencer le PHP depuis 2 heures quand mon père m’est tombé
dessus en m’expliquant combien le PHP ca pue et que je devrais essayer
ca.

Nouvelle reponse

<% form_tag :action => ‘create_from_a_’ + params[:parent], :id =>
@params[:id] do %>
<%= text_field ‘sujet’, ‘titre’ if @sujet %>
<%= text_area ‘message’, ‘contenu’ %>
<%= submit_tag “Create” %>
<% end %>

<%= link_to ‘Retour’, :action => ‘view_’ + params[:parent], :id =>
params[:id] %>

class ForumController < ApplicationController

[…]

def new
@message = Message.new
@sujet = Sujet.new unless params[:parent] != ‘forum’
end

def create_from_a_sujet
@message = Message.new(params[:message])
@message.date = Date.today
@message.user_id = session[:user_id]
@message.sujet_id = @params[“id”]

if @message.save
  flash[:notice] = 'Message was successfully created.'
  redirect_to :action => 'view_sujet', :id => params[:id]
else
  render :action => 'new', :id => params[:id]
end

end

def create_from_a_forum
@sujet = Sujet.new(params[:sujet])
@sujet.date = Date.today
@sujet.user_id = session[:user_id]
@sujet.forum_id = @params[“id”]

if @sujet.save
  @message = Message.new(params[:message])
  @message.date = Date.today
  @message.user_id = session[:user_id]
  @message.sujet_id = @sujet.id

  if @message.save
    flash[:notice] = 'Sujet was successfully created.'
    redirect_to :action => 'view_sujet', :id => @sujet.id
  else
    @sujet.destroy
    render :action => 'new', :id => params[:id]
  end
else
  render :action => 'new', :id => params[:id]
end

end

end