1

我有一个模型“Trip”,我希望只能让“组”中的某些用户创建“评论”。

当我第一次创建旅行模型时,我将它设置为只有一个用户可以编辑它。现在,我希望能够邀请其他用户来编辑它。现在让我绊倒(双关语)的部分是我同时拥有trip belong_to :user(创建它的用户)和trip has_many :users, :through => :group.

问题:

  1. 这是每个 Rails 约定允许的吗?
  2. 根据我的模型,组将同时具有 user_id 和 trip_id。这是解决这个问题的最佳方法吗?也就是说,数据库中是否应该为我邀请加入组的每个用户创建一条新记录?

谢谢。

用户.rb

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

组.rb

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

行程.rb

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

评论.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 %>
4

1 回答 1

0

通常Rails的约定是调用Group模型类似于TripPerson指定它要连接的两个表,但这些连接表是关系数据库的自然副产品。您必须继续Group为每个受邀参加旅行的人创建一个新对象。

于 2012-04-14T00:26:28.377 回答