创建新关系,以便只有特定用户才能编辑文档

时间:2012-04-13 22:07:16

标签: ruby-on-rails ruby-on-rails-3 associations

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

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

问题:

  1. 这是否允许每个Rails惯例?
  2. 根据我的模型,group将同时包含user_id和trip_id。这是解决此问题的最佳方法吗?也就是说,如果我邀请给该组的每个用户在数据库中都有新记录吗?
  3. 感谢。

    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 个答案:

答案 0 :(得分:0)

普通Rails约定可以调用类似Group的{​​{1}}模型来指定它正在加入的两个表,但这些连接表是关系数据库的自然副产品。您必须为每位受邀参加旅行的人继续创建一个新的TripPerson对象。