以下是我的product
模型:
class Product < ActiveRecord::Base
enum status: {
disable: 0,
enable: 1
}
end
在我的控制器中:
class ProductsController < ApplicationController
private
def set_product
@product = Product.friendly.find(params[:id])
if(@product.status != "disable"){
@products
} else {
redirect_to root_path
}
end
end
此处@product.status
返回disable
或enable
,如何使用条件检查产品状态?上述@product.status != "disable"
无效。谢谢!
答案 0 :(得分:0)
当您定义了枚举时,那将创建一些直接与枚举连接的方法。
喜欢禁用?,启用?
class ProductsController < ApplicationController
private
def set_product
@product = Product.friendly.find(params[:id])
if @product.disable?
@products
else
redirect_to root_path
end
end
答案 1 :(得分:0)
我想这是因为@ porduct的状态为nil,也许您需要迁移才能将默认状态值设置为0。
class SetProductStatusToZero < ActiveRecord::Migration
def change
change_column :products, :status, :integer, default: 0
end
end
它不会改变已创建的记录。要做到这一点,你必须创建一个rake任务,或者只需进入rails控制台并更新所有记录。