X
Identifiant Mot de passe
  Admin Blog Accueil Blog Créér un blog Mail Actualités ToutApprendre Soutien Scolaire Shopping Mag des Voyages Recherche Web
OK
Blog sur Ruby On Rails
mercredi 17 décembre 2008, a 12:55
Créer un reseau social simple avec acts_as_network avec rails

Installation du plugin :
Sous netbeans : ajouter le repo :
http://actsasnetwork.rubyforge.org/svn/plugins/acts_as_network/

en mode console :
sudo apt-get install git git-core (pour linux)
script/plugin install git://github.com/sjlombardo/acts_as_network.git

générer la doc :
rake doc:plugins

Version simple

Création d'une table des users
script/generate model user


class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string   :email
      t.string   :hashed_password
      t.string   :salt
      t.datetime :dateLastLogin
      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end


script/generate model friend

class CreateFriends < ActiveRecord::Migration
  def self.up
    create_table :friends, {:id => false} do |t|
      t.column :user_id, :integer, :null => false
      t.column :user_id_target, :integer, :null => false      # target of the relationship
      t.timestamps
    end
  end

  def self.down
    drop_table :friends
  end
end


-> effectuer la migration

Modification des models

class User < ActiveRecord::Base
  acts_as_network :friends, :join_table => :friends
end


Controleur

  def test_acts_as_network
    jane = User.create(:email => 'Jane')
    jack = User.create(:email => 'Jack')

    jane.friends_out << jack                  # Jane adds Jack as a friend
    puts jane.friends.include?(jack)               # true Jack is Janes friend
    puts jack.friends.include?(jane)               # true Jane is also Jack's friend!
  end



Version avec invitations :


Création d'une table des users
script/generate model user


class CreateUsers < ActiveRecord::Migration
  def self.up
    create_table :users do |t|
      t.string   :email
      t.string   :hashed_password
      t.string   :salt
      t.datetime :dateLastLogin
      t.timestamps
    end
  end

  def self.down
    drop_table :users
  end
end


script/generate model invite

class CreateInvites < ActiveRecord::Migration
  def self.up
    create_table :invites do |t|
      t.column :user_id, :integer, :null => false           # source of the relationship
      t.column :user_id_target, :integer, :null => false    # target of the relationship
      t.column :code, :string                                 # random invitation code
      t.column :message, :text                                # invitation message
      t.column :is_accepted, :boolean
      t.column :accepted_at, :timestamp                       # when did they accept?
      t.timestamps
    end
  end

  def self.down
    drop_table :invites
  end
end



Modification des models

class User < ActiveRecord::Base
  acts_as_network :friends, :through => :invites, :conditions => "is_accepted = 1"
end

class Invite < ActiveRecord::Base
  belongs_to :user
  belongs_to :user_target, :class_name => 'User', :foreign_key => 'user_id_target'        # the target of the friend relationship
  validates_presence_of :user, :user_target
end


Controleur :

  def test_acts_as_network
    jane = User.create(:email => 'Jane')
    jack = User.create(:email => 'Jack')

    invite = Invite.create(:user => jane, :user_target => jack, :message => "let's be friends!")

    puts jane.friends.include?(jack)
    puts jack.friends.include?(jane)

    invite.is_accepted = true  # Now Jack accepts the invite
    invite.accepted_at = Time.now
    invite.save and jane.reload and jack.reload

    puts jane.friends.include?(jack)
    puts jack.friends.include?(jane)


  end


Présentation
Bienvenue sur mon blog sur lequel vous trouverez des articles concernant le magnifique framework RoR Ruby on Rails

Envoyer un mail à l'auteur
publicité
commentaire(s)
Bienvenue Paltock (17/12/2008 13:17)

Le 1er Annuaire de B...

Bienvenue olivier (09/12/2008 15:56)

BONJOUR VOUS AVEZ...

Selectionner un enregistrement au hazard Jasperiel (16/10/2008 11:09)

Et bien... en lisant...

Héberger une appli Rails titi53 (14/10/2008 12:58)

Et ovh ??? Quelqu...

Selectionner un enregistrement au hazard manusvs650 (10/10/2008 15:16)

Comment peut-on véri...

Newsletter

Pour vous inscrire à la newsletter de ce blog renseignez votre adresse mail :


mes catégories
Rails (9)
rails (6)
developpement (5)
ruby (4)
ruby on rails (4)
Ruby (3)
administration (2)
mongrel (1)
IDE (1)
UML (1)
plugin (1)
plugins (1)
javascript (1)
Articles précédents
Liste des articles
calendrier
«décembre 2008»
LunMarMerJeuVenSamDim
01 02 03 04 05 06 07
08 09 10 11 12 13 14
15 16 17 18 19 20 21
22 23 24 25 26 27 28
29 30 31
archives
2009-11 (1)
2009-01 (2)
2008-12 (5)
2008-11 (3)
2008-10 (15)
thèmes
rails
plugins
Mes blogs Mongenie préférés
Jeu de mots : Dingbats
Mes autres blogs préférés
Jeux.domozone.net
Blog d'un développeur RoR
Blog sur la veille et le marketing.
Google Android Blog
D'autres blogs sur monGenie
UNDESSINJOUR
Jusqu'ici tout va bien !!
Electron Livre
Le brick à vrac
Les trésors de Marilyn Monroe
Best Of
Rails + UML + StarUML
C'est quoi votre environnement préféré pour développer ?

Visites depuis

Le début du mois : 124

Le mois dernier : 323

L'ouverture du blog : 2187


** ** © Learnorama 2006 - conditions générales - développé par Learnorama et Kernix - Contact - Nouveautés blog