0

Préface:Solliciter Rails Association Commentaires + Questions d'un Noob

Si vous traînez dans #rubyonrails sur freenode cela peut sembler comme un écho à vous comme je l'ai demandé dans là-bas il y a 2 jours. Après avoir passé plusieurs heures à faire des recherches sur les associations AR, suite à mes discussions dans #rubyonrails, je me sens toujours perdu alors je demande ici. :)

Objectif

J'accueille un certain nombre de blogs. Mon intention est de créer des soumissions par lots où je prends un poste, sélectionnez les blogs que je voudrais que le message soit soumis, puis donnez au lot une date de soumission. Plus tard, j'aimerais créer un Worker qui interroge les lots, puis soumet la publication à ses blogs associés.

La Confusion

Je suis confus au sujet de la façon dont je devrais configurer mes associations et les tables correspondantes.

Voici ce que j'ai pour les modèles.

class Blog < ActiveRecord::Base 
    has_many :submissions 
    has_many :posts, :through => :submissions 
end 


class Post < ActiveRecord::Base 
    has_many :submissions 
    has_many :blogs, :through => :submissions 
end 


class Submission < ActiveRecord::Base 
    belongs_to :post 
    belongs_to :blog 
end 

Voici ce que j'ai pour Tables.

[Blogs] 
id   :integer   not null, primary key 
title  :string(255) 
etc 

[Posts] 
id   :integer   not null, primary key 
subject :string(255) 
content :text 
etc 

[Submissions] 
id   :integer   not null, primary key 
submit_date :datetime 
post_id  :integer 
forum_id :integer 
etc 

Questions

  • J'ai actuellement pas de modèle de lot - devrais-je avoir cela? Ou un «lot» peut-il être déduit en revenant sur les soumissions?
  • Si je devais avoir un modèle de lots, cela signifierait-il que le modèle Submisson obtiendrait alors une clé étrangère supplémentaire?
  • Y a-t-il une "façon de rails" pour faire cela?
  • Toute autre contribution est la bienvenue!

Merci beaucoup d'avoir lu ce post gigantesque.

Répondre

1

Dans votre table de soumission, je vous suggère de remplacer forum_id par blog_id pour se conformer à la convention Rails ethos sur la configuration. Sinon, vous devrez spécifier que forum_id est la foreign_key pour les soumissions.

Donc, soit [préféré]:

[Submissions] 
id   :integer   not null, primary key 
submit_date :datetime 
post_id  :integer 
**blog**_id :integer 
etc 

Ou:

class Blog < ActiveRecord::Base 
    has_many :submissions, :foreign_key => "forum_id" 
    has_many :posts, :through => :submissions 
end 

D'après votre description, je ne crois pas que vous avez besoin d'un autre modèle plutôt il suffit d'utiliser le champ submit_date sur la table des soumissions .

Questions connexes