我可以在多对多关系中添加到现有的连接表模型吗?

时间:2011-12-20 11:19:05

标签: ruby-on-rails ruby migration

我有一个标准的关系:

class User <ActiveRecord:: Base
  has_and_belongs_to_many: feeds,: uniq => true
end

class Feed <ActiveRecord:: Base
  has_and_belongs_to_many: users,: uniq => true
end

根据rails命名约定,调用连接表 'users_feeds'。

我需要扩展连接表的功能,并添加模型UserFeed(或UsersFeeds?)。

  1. 添加模型是否是轨道惯例的混乱?
  2. 我是否需要更改连接表的名称,并使用选项:through?
  3. 定义关系

1 个答案:

答案 0 :(得分:6)

为您的连接模型添加一个类很好。您不需要更改表名。生成的代码如下所示:

class User <ActiveRecord:: Base
  has_many :user_feeds
  has_many :feeds, :through=>:user_feeds
end

class UserFeed <ActiveRecord:: Base
  belongs_to :user
  belongs_to :feed
end

class Feed <ActiveRecord:: Base
  has_many :user_feeds
  has_and_belongs_to_many: users, :through=>:user_feeds
end