ruby-on-rails - 委托一个协会
问题描述
我有一个模型 A,它有许多另一个模型 B,它有很多第三个模型 C,并且想将 A 从 B 委托给 C。例如:
class House < ApplicationRecord
has_many :pets
end
class Pet < ApplicationRecord
belongs_to :house
has_many :toys
delegate :house, to: :toys
end
class Toy < ApplicationRecord
belongs_to :pet
end
> toy.house
就目前而言,我必须使用toy.pet.house
解决方案
尝试
class Toy < ApplicationRecord
belongs_to :pet
delegate :house, to: :pet
end
并删除
delegate :house, to: :toys
从Pet
.
至少有两个问题:
class Pet < ApplicationRecord
belongs_to :house
has_many :toys
delegate :house, to: :toys
end
首先, 的实例Toy
不响应house
,所以你不能delegate :house, to: :toys
。其次,即使 的实例Toy
确实响应house
,您也无法在集合上调用该实例方法,这就是事实toys
。所以,这一切都被破坏了。
Pet
但是,确实对house
. 并且,Toy belongs_to :pet
。所以,你做到了Toy delegate :house, to: :pet
。鲍勃是你的叔叔!
推荐阅读
- ios - Cocoapod podspec 验证 - 发生未知 DSL 错误
- javascript - 更改单选按钮调用 java 脚本函数
- java - Java Scribe 库 Twitter OAuth1 请求令牌 401 未经授权
- python-3.x - 如何在 python 中将整数值分配给从 64 到 512 的 4 位二进制?说 0001 = 64, 0010 = 96, .... 1111 = 512
- verilog - 为什么下面的断言在开始时只命中一次并且未能进入非活动状态并保持在完成状态?
- javascript - 过滤对象中的日期
- c# - 响应未显示在文本可视化器中
- java - 如何为 switch case() 语句编写 junit 测试用例?
- c++ - 在抽象基类定义中使用未知类型
- python - python如何读取文件并将部分存储到单独的列表中