【发布时间】:2016-08-18 12:53:20
【问题描述】:
我在关联上使用 find_by:
“sub”与“main”是多对一的关系
@main.subs.find_by(x: 123)
在大多数情况下,我希望它使用常规选择访问并从数据库中检索与“主”相关的“子”记录:
select subs.* from subs where subs.main_id = 333 and subs.x = 123
但还有另一种情况,我希望它忽略数据库并访问我在“main”下创建的“subs”存根:
stub_sub = Sub.new(id: 22, x: 123, main_id: 333)
@main.subs << stub_sub
@main 也没有保存在数据库中,而是像 sub: 一样创建:
@main = Main.new(id: 333)
当我在调试时到达 find_by 行并尝试访问 @main.subs 时,它看起来就像我从数据库查询中获得的活动记录关系,但如果我执行 find_by/all 之类的操作,它会尝试访问数据库,看看那里什么都没有,然后返回一个空关系。
有什么方法可以阻止 find_by(或任何活动记录方法)访问数据库并只处理我为它创建的存根关系?
【问题讨论】:
标签: ruby-on-rails activerecord