【问题标题】:Access attribute from other model in Rails从 Rails 中的其他模型访问属性
【发布时间】:2014-07-29 07:40:07
【问题描述】:

我是 Rails 初学者,正在构建我的第一个 Web 应用程序。

目前我有两个模型:UsersPatients。一个用户拥有_许多患者,一个患者属于_一个用户。在患者控制器中,我在 create 操作中添加了以下行,以仅在患者#index 中显示属于已登录用户的患者。

@patient.user_id = current_user.id 

在 patients#index 的表格中,它显示了 user_id

<td><%= patient.user_id %></td>

User 模型有一个 company_name:string 属性。

如何在此页面上显示来自我的用户模型的 :company_name - 而不是 user_id?

【问题讨论】:

    标签: ruby-on-rails ruby rails-activerecord


    【解决方案1】:

    您应该利用您的user 关联:

    <td><%= patient.user.company_name %></td>
    

    【讨论】:

    • @PacoVermeulen 有帮助吗?
    【解决方案2】:

    Law Of Dementer

    除了Marek的回答,你不妨看看delegate方法

    我不确定这是否会直接对您有所帮助,因为 delegate 仅适用于 belongs_tohas_one 方法(尽管我之前曾尝试使用 has_many

    --

    #app/models/patient.rb
    Class Patient < ActiveRecord::Base
       belongs_to :user
       delegate :company_name, to: :user, prefix: true
    end
    

    这将允许您调用:

    <%= patient.user_company_name %>
    

    比任何东西都更美观 - 但总是很方便,考虑到你可以在任何地方都有这么多的关联

    【讨论】:

    • 谢谢瑞克!我会阅读这个方法和维基百科页面!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-08-11
    • 2010-12-02
    • 2011-11-19
    • 2011-02-11
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    相关资源
    最近更新 更多