0

私の Rails アプリでは、boolean フィールドをモデルに格納する必要があります。Sqlite3 (開発に使用) は文字定数't''f'真理値を使用するため、問題が発生します。ただし、私のアプリがデプロイされる MySQL は、リテラルtruefalse(tinyints 1 と 0 にそれぞれ対応する) を使用します。これにより、SQL 条件の使用が問題になります。

select * from articles where published = true

Rails では次のように表現されます。

Article.where 'published = true'

Sqlite3 では失敗し、メッセージが表示されますno such column: true

Railsでブール値アダプタをポータブルに処理するための推奨される方法は何ですか?

4

1 に答える 1

1

アクティブレコードを使用すると、

Article.where(:published => true)

あなたはおそらくこれをさらに一歩進めて、これをスコープにしたいと思うでしょう

class Article < ActiveRecord::Base
  scope :published, where(:published => true)
end

あなたのコントローラーであなたがただ行くことができるように

@published_articles = Article.published

active_recordのクエリインターフェイスの詳細については、http://guides.rubyonrails.org/active_record_querying.htmlをご覧ください。

=等式比較の代わりに代入演算も使用しています==

于 2012-05-22T16:59:32.723 に答える