0

データベースの値を正しくチェックする方法:テーブルadd_after_sign_inにはブール値のフィールドがあり、デフォルトではfalseです...しかし、それが空ではなく、真でないかどうかをチェックしてから、そのような行を選択する方法:私は試します:

litem = LineItem.find(:all, :conditions => {:cart_id => cart_id && !:add_after_sign_in })

しかし、実際にはそのような記録はありません...なぜですか?trueでないテーブルの行の値を確認する簡単な方法は?

4

3 に答える 3

1

whereより読みやすい構文に使用することもできます。

litem = LineItem.where(cart_id: cart_id, add_after_sign_in: [nil, false])

または、スコープ付き:

class LineItem
  scope :not_added_after_sign_in, where(add_after_sign_in: [nil, false])
  #...
end

litem = LineItem.where(cart_id: cart_id).not_added_after_sign_in

編集:トークランドの答えの後に微調整。

于 2013-01-14T20:02:36.460 に答える
1

このような記号は使用できません (ただし、squeelと Rails 3 で同様のことができることに注意してください)。

私は書きます(line_itemsそれはコレクションであることに注意してください):

line_items = LineItem.where(:cart_id => cart_id, :add_after_sign_in => false)

ただし、適切なモデル構造と名前付きスコープがあれば、より宣言的なコードを記述できるはずです。

line_items = Cart.find(cart_id).line_items.without_add_after_sign_in
于 2013-01-14T19:55:22.603 に答える
1

conditionsハッシュです。あなたは構文を台無しにしているだけです。これを試してください:

litem = LineItem.find(:all, 
  :conditions => {:cart_id => cart_id, :add_after_sign_in => [nil, false]})
于 2013-01-14T19:52:27.900 に答える