我有以下模型:
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/