ruby-on-rails - 如何为 has_and_belongs_to_many 关系设置我的灯具?

标签 ruby-on-rails ruby ruby-on-rails-3 activerecord fixtures

我有以下模型:

class Company < ActiveRecord::Base
  has_and_belongs_to_many :regions

class Region < ActiveRecord::Base
  has_many :requests
  has_and_belongs_to_many :companies

class RequestForProposals < ActiveRecord::Base
  belongs_to :region

每当我收到新请求时,我想向同一地区的活跃公司发送通知。

我如何在我的固定装置中设置它,以便我可以对寻找合适公司的逻辑进行单元测试?

我试过了

region_ids: 1, 2
regions: one, two

在 companies.yml 中,但都不能为公司分配区域。

这里是生成的 SQL 的要点:https://gist.github.com/2713518

最佳答案

为了

regions: one, two

要在 companies.yml 中工作,您需要让 Rails 自动分配区域的 ID。这是因为(为了避免必须在 companies.yml 之前读取 regions.yml)rails 根据公司固定装置的名称计算它在连接表中粘贴的 id。如果您自己分配了 ID,它们将不会与计算出的 ID 匹配。

从您提供的 sql 看来,您正在将区域上的 ID 设置为 1 和 2,即您的 regions.yml 有

one:
  id: 1
  name: MyString 

删除 id:1 就可以了。您还需要更新任何其他涉及区域的文件(例如 request_for_proposals.yml),替换

region_id: 1

region: one

Rails 知道这意味着将 region_id 设置为您的设备中标签为 one 的区域的 ID。

关于ruby-on-rails - 如何为 has_and_belongs_to_many 关系设置我的灯具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10578620/

相关文章:

mysql - 当启动我的 Rails 服务器时,我可能会在 mysql 中遇到一些错误

ruby-on-rails - 在安装了bundler -v 2.0.2的Docker上运行的Rails 6…必须将此 bundle 文件使用Bundler 2或更高版本

ruby - 为什么 extend 方法不是 put puts value

ruby - 运行另一个全局变量完整的 ruby​​ 脚本?

ruby-on-rails - 按 time desc 和 total_votes 呈现帖子

ruby-on-rails - 错误率: attr_encrypted assignment doesn't get written?

ruby-on-rails - 如何在 Rails 3 的功能测试中使用 polymorphic_path

mysql - 将 SQL 文件导入 Rails 数据库

ruby-on-rails - Rails - 测试使用 DateTime.now 的方法

ruby-on-rails - 在 Ruby/Rails 中处理没有时区的时间/日期时间