通过状态ID获取状态名称 - Rails 4

问题描述:

我有2个类,ProductDetailsProductStatus通过状态ID获取状态名称 - Rails 4

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_statusesname

我尝试这样做:

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

,但它不工作:(

需要帮助

感谢

+1

您得到的错误究竟是什么? – panmari

+0

未定义的方法名称为零:NilClass :( –

+2

这意味着product_detail的product_id是零或不存在于产品表中。仔细检查您的数据库条目 – panmari

从您的意见,我意识到你想!使用列status作为外键。这必须在belongs_to语句中提及:

belongs_to :product_status, foreign_key: :status 

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

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

+0

Lol,就是这样。TYVM! –