J'ai créé une application ruby on rails qui permet aux utilisateurs de suivre leurs entraînements. L'utilisateur a_many séances d'entraînement. En outre, un utilisateur peut créer une boîte (gymnase) s'il est propriétaire d'une salle de sport. Le but est de filtrer l'activité des utilisateurs de sorte qu'ils ne puissent voir que les informations relatives à leur salle de sport. Les utilisateurs peuvent ensuite spécifier s'ils sont membres de cette boîte via un modèle d'appartenance. La table Membership rassemble @ box.id et current_user.id dans les colonnes membership.box_id et user.id respectivement.Restriction d'une portion de code via une association
Les associés d'utilisateur via le formulaire ci-dessous dans la vue /views/boxes/show.html.erb:
<% remote_form_for Membership.new do |f| %>
<%= f.hidden_field :box_id, :value => @box.id %>
<%= f.hidden_field :user_id, :value => current_user.id %>
<%= submit_tag "I am a member of this box" , :class => '' %>
<% end %>
j'afficher puis, dans la page show case tous les utilisateurs qui sont membres de cette boîte .
<% @box.users.each do |user| %>
<%= link_to (user.username), user %><br/>
<% end %>
J'essaie de limiter la forme aux seuls utilisateurs qui ne sont pas déjà membres de cette boîte, mais je ne sais pas comment écrire la déclaration <% unless ... %>
.
Voici le reste des associations:
utilisateur
class User < ActiveRecord::Base
has_many :boxes
has_many :workouts, :dependent => :destroy
end
entraînement
class Workout < ActiveRecord::Base
belongs_to :user
belongs_to :box
end
Box
class Box < ActiveRecord::Base
belongs_to :user
has_many :users, :through => :memberships
has_many :workouts, :through => :users
has_many :memberships
end
membres
class Membership < ActiveRecord::Base
belongs_to :user
belongs_to :box
end
Je suppose que certaines personnes vont bénéficier de tout le code, mais c'est juste trop de lire parfois :) – s84