Développeur Web RoR

Aller au contenu | Aller au menu | Aller à la recherche

Tag - ror

Fil des billets

mercredi 17 octobre 2012

2 tables de jointure différentes entre 2 mêmes models

Bon le titre est un peu capilo-tracté. L'explication qui va suivre presque tout autant.
Imaginons vous avez un model User et un model Book. On veut modéliser une relation "à participé à la rédaction de" et une relation "à lu". Dans ce cas des tables de jointure s'impose.
Pour une table de jointure pas de problème, on suit les conventions : (nom des models au pluriel triés par ordre alphabétique et séparés par "_"). Mais dans ce cas nous avons deux tables de jointure et nous ne voulons pas confondre les données. Voici comment procéder :
Créer les tables de jointure :
rails g migration join_table_users_books
Ouvrez le fichier générer et mettez-y la création des tables de jointure
def up
  create_table :reading, :id => false do |t|
    t.integer :user_id
    t.integer :book_id
  end
  add_index :reading, [:user_id, :book_id]
  create_table :writing, :id => false do |t|
    t.integer :user_id
    t.integer :book_id
  end
  add_index :writing, [:user_id, :book_id]
end
def down
  drop_table :reading
  drop_table :writing
end
Ensuite ajoutez les relations habtm dans les models :
class User < ActiveRecord::Base
  has_and_belongs_to_many :readed_books, :class_name => "Book", :join_table => "reading"
  has_and_belongs_to_many :written_books, :class_name => "Book", :join_table => "writing"
end
class Book < ActiveRecord::Base
  has_and_belongs_to_many :readed_by_users, :class_name => "User", :join_table => "reading"
  has_and_belongs_to_many :written_by_users, :class_name => "User", :join_table => "writing"
end
Vous pouvez maintenant faire :
User.first.readed_books
User.first.readed_book_ids
u = User.first
u.readed_books << Book.limit(3).all
u.save
Voilà il ne reste plus qu'à appliquer ceci dans votre cas.
 

mardi 9 février 2010

underscore dans le nom de domaine (sous domaine) et internet explorer - erreur 422 - InvalidAuthenticityToken - Rubyonrails

Cela fait 1 journée complète que je cherche pourquoi je n'arrive pas à m'authentifier sur un sous-domaine.

Erreur InvalidAuthenticityToken dans le log "production.log", et rails m'affichait l'erreur 422 (public/422.html) du fait que Internet Explorer n'arrivait pas à enregistrer le cookie et la variable de session.

Parce que IE n'arrive pas (Firefox si) à stocker les cookies et les variables de session sur des sites avec des _ dans leur sous-domaine.

Oui c'est vrai c'est interdit les _ mais je m'en souvenais plus !!

vendredi 29 janvier 2010

Créer un projet rails avec une version spécifique du framework

RubyOnRails

Merci à mon chef de projet pour cette astuce...
Si vous voulez créer un projet rails avec une version spécifique du framework rails :

Par exemple pour une version 2.3.2 :
rails _2.3.2_ mon_projet

Pratique pour voir les différences entre deux versions sur des projets vides...