【问题标题】:Retrieving data from two Rails model从两个 Rails 模型中检索数据
【发布时间】:2017-03-29 08:46:18
【问题描述】:

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

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 从激活的用户那里获取数据,就像这样

&lt;%= activation.user.dealer_store %&gt;

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

你可以在这里找到它https://bitbucket.org/QuriouslyStrong/sample_app

【问题讨论】:

  • activation.user.dealer_store - 这行不通。

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


【解决方案1】:

由于用户有很多激活,您需要首先确定您想要的激活编号。假设这是用户第一次激活它会是user.activations.first.customer_phone_number

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

拥有多个 activations 对我来说听起来很奇怪,所以也许您希望建立 has_one 和 belongs_to 关系,而不是多对一关系,但不能确定。

【讨论】:

    【解决方案2】:

    您需要能够确定您对哪个激活感兴趣,因为所有用户的激活都将在一个数组中返回。

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

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

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

    【讨论】:

      【解决方案3】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-01-10
        • 1970-01-01
        • 1970-01-01
        • 2015-09-10
        • 2021-01-18
        • 1970-01-01
        相关资源
        最近更新 更多