2010-12-02 9 views
1

私は自分のトレーニングを追跡できるようにするために、Ruby on Railsアプリケーションを構築しました。ユーザーはたくさんのトレーニングをしています。さらに、ユーザーは、ジムの所有者である場合、ボックス(ジム)を作成することができます。目的は、ジムに関連する情報のみを見ることができるようにユーザの活動をフィルタリングすることである。ユーザーは、Membershipモデルを使用して、そのボックスのメンバーであるかどうかを指定できます。メンバシップテーブルは、それぞれmembership.box_idおよびuser.idカラムの@box.idおよびcurrent_user.idを収集します。アソシエーションを使ってコードの一部を制限する

/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 %> 

<% @box.users.each do |user| %> 
    <%= link_to (user.username), user %><br/> 
<% end %> 

私はすでにそのボックスのメンバーではありませんが、私は<% unless ... %>文を書く方法を確認していないユーザーのみにフォームを制限しようとしています。ここで

は団体の残りの部分です:

ユーザー

class User < ActiveRecord::Base 
    has_many :boxes 
    has_many :workouts, :dependent => :destroy 
end 

ワークアウト

class Workout < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 

ボックス

class Box < ActiveRecord::Base 
    belongs_to :user 
    has_many :users, :through => :memberships 
    has_many :workouts, :through => :users 
    has_many :memberships 
end 

会員

class Membership < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :box 
end 
+0

私はいくつかの人々がすべてのコードから恩恵を受けるだろうと思うが、それは時々読み過ぎるだけである:) – s84

答えて

0
# Membership model 
named_scope :for_box, lambda {|box| {:conditions => {:box_id => box.id}}} 

# User model 
has_many :memberships 

def member_of_box?(box) 
    !memberships.for_box(box).blank? 
end 

# View 
<% unless current_user.member_of_box?(box) %> 
    # Show the form 
<% end %> 

免責事項:コードがテストされていません。それはかもしれない小さな変更が必要です。

+0

私はエラーが発生している。 'for_box 'for#' – bgadoci

+0

私は 'named_scope'の定義を以下のように変更しました。これがうまくいきたいです。レール3を使用している場合、有効範囲の定義は異なります。詳細はhttp://api.rubyonrails.org/classes/ActiveRecord/NamedScope/ClassMethods.htmlを参照してください。 – Chirantan

+0

私たちは近いと思います。構文エラーが発生しました: '/Users/bgadoci/WODstack/app/models/membership.rb:8:構文エラー、予期しないtASSOC、予期している '}' ...、lambda {| box | :条件=>(:box_id => box.id)} ^ /Users/bgadoci/WODstack/app/models/membership.rb:8:構文エラー、予期せぬtASSOC、予想 ')' ... ox | :conditions =>(:box_id => box.id)}^' – bgadoci

関連する問題