我如何实现以下目标?我有两个模型(博客和读者)和一个联接表,这将允许我在它们之间建立N:M关系:

class Blog < ActiveRecord::Base
  has_many :blogs_readers, :dependent => :destroy
  has_many :readers, :through => :blogs_readers
end

class Reader < ActiveRecord::Base
  has_many :blogs_readers, :dependent => :destroy
  has_many :blogs, :through => :blogs_readers
end

class BlogsReaders < ActiveRecord::Base
  belongs_to :blog
  belongs_to :reader
end

我现在想做的是,在不同的博客中添加读者.但条件是,我只能向博客添加一个读者.所以BlogsReaders表中不能有任何重复项(相同的readerID,相同的blogID).我怎样才能做到这一点?

第二个问题是,如何获得读者尚未订阅的博客列表(例如填写下拉 Select 列表,然后可以使用该列表将读者添加到另一个博客)?

推荐答案

那么:

Blog.find(:all,
          :conditions => ['id NOT IN (?)', the_reader.blog_ids])

Rails通过关联方法为我们收集ID!:)

http://api.rubyonrails.org/classes/ActiveRecord/Associations/ClassMethods.html

Ruby-on-rails相关问答推荐

本地主机的上衣配置

Gemfile需要较新版本的依赖项

RubyOnRail在测试环境中启动失败

Rails Heroku部署:预编译assets资源 失败.SassC::语法错误

Rails 7 中的预编译

一对多关联 counter_cache 在 Rails 中无法正确重新加载

Rails 7 - has_many_attached 在加载新附件时删除旧附件

Rspec期望()与期望{}

别名可能与不同模型的相同别名有许多关联?

有没有办法在 Rails 3.1 中检测用户代理

如何使用 capistrano deploy 定位特定的提交 SHA

删除链接在 Rails 3 视图中发送Get而不是Delete

Rails:将所有未知路由重定向到 root_url

使用 Rails 时,在 Ruby 中处理常量的最佳方法是什么?

在 RoR 中引用同一个表的多个外键

从 Rails 中的控制器调用辅助方法时出现未定义的方法

错误:无法构建 gem 原生扩展 - 安装 mysql2 时出错

# 轨道中的 TODO

如何在 Rails 4 中测试控制器关注点

如何拆分长行的 Ruby