4

RoR+MySQLをセットアップしています。データベースには、Tinyintフィールドtがあります。Railsからtの値を読み取ると、TinyintフィールドがRailsによってブール値として解釈されるため、trueまたはfalseになります。ここまでは順調ですね。

このフィールドtをRailsから実際の整数として読み取るにはどうすればよいですか?

4

2 に答える 2

6

http://apidock.com/rails/ActiveRecord/AttributeMethods/BeforeTypeCast/attributes_before_type_cast

例えば:

Model.first.attributes_before_type_cast['your_boolean_field']

返される値は DB によって異なります。postgesql では「f」または「t」です。

于 2012-08-30T13:30:49.060 に答える
2

@sumskyi の応答に基づいて構築するには、このフィールドに常に通常の整数としてアクセスする場合は、モデルの組み込みメソッドをオーバーライドして、反復運動による損傷を回避できます。

class GroceryStore < ActiveRecord::Base
  # rating is a TINYINT column
  # we just redefine the method here to return the value cast how we want it
  def rating
    self.attributes_before_type_cast['rating'].to_i
  end
end

呼び出すgrocerystore.ratingと、ブール値ではなく整数が返されます。

于 2013-02-28T19:56:38.137 に答える