2012-08-15 36 views
0

数据库中创建一个项目,我会尝试尽可能简单:Rails的:如何使用PARAMS与其他数据

我有获取产品信息(名称,说明,...等)的形式,我想添加到商店产品列表(使用模型关联:产品belongs_to :store和商店has_many :products)。

除了这些信息之外,我还想在产品表中添加一个'ON'状态字段。为什么?在产品所有者想要删除产品的情况下,状态变为“OFF”而不是完全销毁数据库上的产品(由于统计学原因,我必须保留数据6个月)。

这是我的控制器代码:

# Create a new product for the actual company. 
def create 

    # Get store information. 
    @store = Store.find_by_id session[:store_id] 

    # Set new store product. 
    product = @store.products.build(
     :name => params[:product][:name], 
     :desc => params[:product][:desc], 
     :url => params[:product][:url], 
     :status => 'ON' 
     ) 

    if product.save 
     redirect_to :back, :notice => 'Product successfully created.' 
    else 
     redirect_to :back, :alert => 'Something goes wrong.' 
    end 
end 

我想这个快捷方式,但它不工作:

product = @store.products.build(params, :status => 'ON') 

我的问题,是如何添加:status => 'ON'更优雅比列出所有params

在此先感谢。

回答

2
product = @store.products.build(params[:product]) 
product.status = 'ON' 
+1

我真是太棒了!感谢丹尼斯的帮助,这很明显!绝对需要休息一下...... – htaidirt 2012-08-15 10:41:21

1

我想你可以创建一个范围,说scope :enabled, conditions: {status: 'ON'},然后你可以做product = @store.products.enabled.build(params[:product])

+0

这是非常有趣的方法,用范围创建。谢谢! – 2012-08-16 04:07:00

相关问题