2012-04-13 24 views
1

「Trip」というモデルがあり、「グループ」の特定のユーザーのみが「コメント」を作成できるようにしたい。特定のユーザーのみが文書を編集できるように新しい関係を作成する

トリップモデルを初めて作成したときに、1人のユーザーしか編集できないように設定しました。今、他のユーザーにも同様に編集を依頼できます。今私を踏み外している部分は、trip belong_to :user(それを作成したユーザー)とtrip has_many :users, :through => :groupの両方があることです。

質問:

  1. この許可あたりRailsの慣例ですか?
  2. 私のモデルに基づいて、グループはuser_idとtrip_idの両方を持ちます。これがこの問題にアプローチする最善の方法ですか?つまり、グループに招待されたすべてのユーザーのデータベースに新しいレコードがあるはずです。

ありがとうございます。

user.rb

class User < ActiveRecord::Base 
    has_many :trips, :through => :groups 
    has_many :trips, :dependent => :destroy 
    has_many :groups 
    has_many :comments, :dependent => :destroy 
end 

group.rb

class Group < ActiveRecord::Base 
    belongs_to :trip 
    belongs_to :user 
end 

trip.rb

class Trip < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :traveldeal 
    has_many :groups 
    has_many :users, :through => :groups 
end 

comment.rb

class Comment < ActiveRecord::Base 
    belongs_to :user 
    belongs_to :commentable, :polymorphic => true 
end 

ビュー(show.html.erb)

<% unless @user.trips.empty? %> 
    <% @user.trips.each do |trip| %> 
    <!-- Content here --> 
    <% end %> 
<% end %> 
+1

':group'の代わりに':through =>:groups'を試してみます – niiru

+0

私のビューはエラーを表示しなくなりましたが、ユーザに属するトリップも表示されません。投稿を訂正しました。 – Huy

答えて

0

ノーマルRails大会は、参加された2つのテーブルを指定するTripPersonようGroupモデル何かを呼び出すことがあったであろうが、これらのテーブル結合は、リレーショナルの自然な副産物ですデータベース。旅行に招待されたすべての人物に対して、新しいGroupオブジェクトを作成し続ける必要があります。

+0

ありがとう、カイル。私は戻って、 'Group'モデルを' TripUser'に変更しました – Huy

関連する問題