rails activerecord自定义列作为外键/主键

时间:2018-07-12 06:46:55

标签: ruby-on-rails

我有两个表:

制造商和产品

两个表都有一个唯一的“签名”列。

制造商模型:

class Manufacturer < ApplicationRecord
  has_many :products, foreign_key: 'signature', primary_key: 'signature'
end

产品型号:

class Product < ApplicationRecord
  belongs_to :manufacturer, foreign_key: 'signature', primary_key: 'signature'
end

在我的产品索引视图中,我想显示表制造商的“活动”列的值。

# products/index.html.erb
<% @products.each do |product| %>
  <%= product.manufacturer.active %>
<% end %>

我遇到错误

  

nil:NilClass的未定义方法“活动”

如何从产品索引视图访问制造商模型的活动属性?我想

  

product.manufacturer.active

不是正确的方法。

1 个答案:

答案 0 :(得分:1)

在您的代码示例中,您必须确保每个 const val=[{ x:"second", y:2 },{ x:"first", y:1 }]; function compare(a,b){return a.x.length-b.x.length}; val.sort(compare); console.log(val);都有一个product。否则manufacturer.active上将失败。

如果没有制造商的产品,则可以作为故障保存,可以使用here所述的安全导航操作员manufacturer = nil&.可用

ruby2.3

作为替代方案,您可以像有条件地进行product.manufacturer&.active调用

.active

product.manufacturer.active unless manufactuer.nil?