【问题标题】:Ruby On Rails - How to access a Child from its Parent?Ruby On Rails - 如何从父级访问子级?
【发布时间】:2015-08-07 10:53:09
【问题描述】:

我正在努力寻找一种从其父级访问子级属性的方法。我有这两个模型:

class SuspendedCompany < ActiveRecord::Base
  has_many  :cases
end


class Case < ActiveRecord::Base
  belongs_to :suspended_company
end

我想从 SuspendedCompany 访问 Case 的名称。在我的 SuspendedComany 控制器中,我尝试了这样的连接:

@case = Case.joins(:suspended_company).where(...)

【问题讨论】:

  • 你想要所有孩子的还是一个?
  • 您是否有suspended_company 对象,或者您想加载所有已暂停公司的案例模型数据?
  • 我猜你正在寻找这个@case = Case.joins(:suspended_company).pluck(:name)
  • 我不太确定你的问题是什么,但我认为你需要使用includes 来获取Cases 及其SuspendedCompany 的相关记录,例如:Case.includes(:suspended_company).joins(:suspended_company).where(...)
  • 标题将“Ruby on Rails”拼错为“Roby on Rails”。能改吗?

标签: ruby-on-rails ruby ruby-on-rails-4 erb


【解决方案1】:

我相信您会通过类似这样的方式在您的 SuspendedCompany 控制器中找到一家公司

@suspended_company = SuspendedCompany.find(params[:id])

为了无需额外查询即可访问您视图中的案例,您可以将其转换为

@suspended_company = SuspendedCompany.includes(:cases).find(params[:id])

然后在你看来你可以这样做

@suspended_company.cases.map(&:name)

【讨论】:

    【解决方案2】:

    在 SuspendedCompany 的控制器索引中写入

    @cases = @SuspendedCompany.cases
    

    在 SuspendedCompany 的索引视图中

    <% @cases.each do |case| %>
       <%= case.name %>
    <% end %>
    

    【讨论】:

    • 在控制器中,'cases' 出现未定义的方法错误
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-13
    • 2021-11-05
    • 1970-01-01
    • 1970-01-01
    • 2020-01-11
    相关资源
    最近更新 更多