【问题标题】:Ruby on Rails 3 - retrieved data always zeroRuby on Rails 3 - 检索到的数据始终为零
【发布时间】:2012-09-07 07:26:32
【问题描述】:

我找不到以下代码的有效解决方案:

  def search_last_rate
    self.rate  = Rate.find(:first, :select => "rateconverted", :conditions => ["dominant_id = ? and converted_id = ?", self.currency_bought_iso, self.currency_sold_iso], :order => 'ratedate, dateloaded, timeloaded DESC')
  end

当我在控制台中执行此操作时,我会检索到适当的值:

`=> #<Rate rateconverted: 0.8131>`           

所有列在 MYSQL2 中都定义为 decimal,但是当我在模型和新的 html 页面中使用它时,它总是保存值 0.0

请指教:)

【问题讨论】:

    标签: ruby-on-rails-3 search activerecord


    【解决方案1】:

    十进制和整数在mysql中是不同的。如果您希望数据为数字,则在迁移中使用“整数”,否则使用“浮点”。结帐Decimal VS Int in MySQL?

    【讨论】:

    • 我已阅读并了解上下文,但不知道如何在我现在拥有的代码中使用它。另请阅读link 并认为我应该继续使用小数。
    • (add_column :parts, :price, :decimal, :precision => 8, :scale => 2)。 scale 是小数点右侧的最大位数和小数点左侧的精度。
    • 我必须在哪里添加这个?在迁移文件中,我已经完成了此操作,例如 rate 列。 t.decimal :rate, :precision =&gt; 12, :scale =&gt; 8。所有受影响的列都是这种情况。非常感谢您的帮助,因为我被卡住了:(
    • 汇率显示是否正确?
    • 在数据库中,并通过控制台。当它存储在值self.rate not 并且存储为0.0
    【解决方案2】:
    1. 确保 self.rate 不是整数
    2. 试试

      self.rate = Rate.find(:first, :select => "rateconverted", :conditions => ["dominant_id = ? and convert_id = ?", self.currency_bought_iso, self.currency_sold_iso], :order => 'ratedate, dateloaded, timeloaded DESC').to_f

    【讨论】:

    • 已经感谢您的帮助 :) 我已经尝试了该语句并收到以下错误:NoMethodError (undefined method `to_f' for #<0x4a4e160>
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多