按状态ID获取状态名称 - Rails 4

时间:2015-08-08 22:03:22

标签: ruby-on-rails ruby-on-rails-4 foreign-keys

我有2个课程,ProductDetailsProductStatus

class ProductDetail < ActiveRecord::Base
   belongs_to :product_status
end

class ProductStatus < ActiveRecord::Base
   has_many :product_details
end

这些表的架构如下:

create_table "product_details", force: :cascade do |t|
   t.integer  "product_id", limit: 4
   t.string   "serial",     limit: 255
   t.string   "comment",    limit: 255
   t.datetime "created_at",             null: false
   t.datetime "updated_at",             null: false
   t.integer  "status",     limit: 4
end

create_table "product_statuses", force: :cascade do |t|
   t.boolean  "available"
   t.string   "name",       limit: 255
   t.datetime "created_at",             null: false
   t.datetime "updated_at",             null: false
end

显示ProductDetails,我有status_id,但我想显示名称。它位于product_statuses name

我试过了:

<% @product_details.each do |product_detail| %>
   <td><%= product_detail.product_status.name %></td>
<% end %>

但它不起作用:(

需要帮助。

谢谢!

1 个答案:

答案 0 :(得分:2)

根据您的评论,我意识到您正在尝试使用列 belongs_to :product_status, foreign_key: :status 作为外键。这必须在belongs_to语句中提及:

product_status_id

默认情况下,rails正在寻找名为{{1}}的列作为外键。

另见http://guides.rubyonrails.org/association_basics.html#options-for-belongs-to-foreign-key