从两个Rails模型

时间:2016-11-15 12:54:01

标签: ruby-on-rails model-view-controller

我有一个属于User的激活模型。我试图显示用户在视图中提交的激活信息,但我不确定如何执行此操作。例如,

class Activation < ApplicationRecord
belongs_to :user
default_scope -> { order(created_at: :desc) }
validates :user_id, presence: true
validates :dealer_store, presence: true, length: { maximum: 50 }
validates :customer_name, presence: true, length: { maximum: 50 }
validates :customer_phone_number, presence: false, length: { maximum: 10 }

class User < ApplicationRecord
has_many :activations
validates :name, presence: true, length: { maximum: 50 }

我能够通过用户ID获取激活用户的数据,如此

<%= activation.user.dealer_store %>

如何获取激活用户的customer_phone_number?我好像错过了什么

您可以在https://bitbucket.org/QuriouslyStrong/sample_app

找到它

3 个答案:

答案 0 :(得分:0)

由于用户有多次激活,您需要先确定所需的激活码。假设这是用户首次激活,它将是user.activations.first.customer_phone_number

如果您已经拥有要查找的激活实例,则可以执行activation.customer_phone_number

有几个activations听起来很奇怪,所以也许你想要做一个has_one&amp;属于关系,而不是多对一的关系,但不能肯定地说。

答案 1 :(得分:0)

您将需要能够识别您感兴趣的激活,因为所有用户的激活都将以阵列形式返回。

<%= user.activations[0].customer_phone_number %>

会为您提供与用户关联的第一次激活的信息...或者,如果您想详细说明与所有激活相关联的所有不同电话号码,您需要通过一个用户的激活来迭代每个用户的激活块:

<% user.activations.each do |act| %>
  <li><%= act.customer_phone_number %></li>
<% end %>

答案 2 :(得分:0)

如果您正在查看当前用户的客户电话号码,那么您可以试试这个。

<% current_user.activations.each do |a| %>
  <%= a.customer_phone_number %>
<% end %>

你也可以试试这个, 如果您有用户对象,则可以使用用户对象

<% user.activations.each do |a| %>
  <%= a.customer_phone_number %>
<% end %>