0

私はできるだけシンプルにしようとします:

ストア製品リストに追加したい製品情報(名前、説明など)を取得するフォームがあります(モデルの関連付け:製品belongs_to :storeとストアを使用has_many :products)。

その情報に加えて、「ON」ステータスフィールドを製品テーブルに追加したいと思います。なんで?製品の所有者が製品を削除したい場合、データベース上の製品を完全に破棄するのではなく、ステータスが「オフ」になります(統計上の理由から、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ですか?

前もって感謝します。

4

2 に答える 2

2
product = @store.products.build(params[:product])
product.status = 'ON'
于 2012-08-15T10:28:19.623 に答える
1

scope :enabled, conditions: {status: 'ON'}たとえば、スコープを作成してから、を実行できると思いますproduct = @store.products.enabled.build(params[:product])

于 2012-08-15T13:45:48.173 に答える