Rails中其他模型的Access属性

时间:2014-07-29 07:40:07

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

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

目前我有两种模式:用户患者。用户拥有多个患者,患者属于一个用户。在患者控制器中,我将以下行添加到创建操作中,以仅显示属于患者#index中登录用户的患者。

@patient.user_id = current_user.id 

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

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

User模型具有company_name:string属性。

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

2 个答案:

答案 0 :(得分:2)

您应该使用user关联:

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

答案 1 :(得分:1)

Law Of Dementer

Marek的答案之后,您可能希望查看delegate方法

我不确定这是否会直接对您有所帮助,因为delegate仅适用于belongs_tohas_one方法(尽管我已将其与{{暂时合作) 1}}之前)

-

has_many

这将允许您致电:

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

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