【问题标题】:Access ID of parent model from associated model in rails从 Rails 中的关联模型访问父模型的 ID
【发布时间】:2012-01-04 19:52:16
【问题描述】:

好的,我在 rails 中有以下模型:

  • '碎片'
  • 属于分片或不属于任何事物的“现实”
  • 属于现实的“空间”
  • 属于空间的“属性”

我可以访问 shard.reality.space.first.properties,但如果以这种方式访问​​,我希望能够从属性模型中的自定义方法访问“shard”id。

有什么办法吗?

【问题讨论】:

  • 有人应该指出你在这里破坏了一些严重的封装。得墨忒耳定律 (en.wikipedia.org/wiki/Law_of_Demeter) 被普遍解释为只有一个点(尽管这过于简单化了),但您尝试做的事情肯定违反了它。财产应该只知道它自己和它的成员;空间是“成员”,分片不是。我会看看你是如何构建它的,看看你是否能找到更好的方法。

标签: ruby-on-rails model associations


【解决方案1】:
class Property < ActiveRecord::Base
  belongs_to :space

  def custom_method
    space.reality.shard.id if space.reality.shard
  end
end

【讨论】:

    【解决方案2】:

    Property 对象的实例方法中,这应该可以工作:

    shard_id = space.reality.shard_id
    # returns either the shard id, or nil if the reality doesn't belong to a shard
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-27
      • 1970-01-01
      • 1970-01-01
      • 2018-09-13
      • 1970-01-01
      相关资源
      最近更新 更多