首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby中的money-rails问题

Ruby中的money-rails问题
EN

Stack Overflow用户
提问于 2018-09-27 15:09:00
回答 1查看 234关注 0票数 0

我正在学习一个教程,在一个新的项目中使用money。

下面是我的迁移文件:

代码语言:javascript
复制
class AddFieldsToPlan < ActiveRecord::Migration[5.1]
  def change
    add_column :plans, :payment_gateway_plan_identifier, :string
    add_column :plans, :price, :integer
    add_column :plans, :interval, :integer
    add_column :plans, :interval_count,:integer
    add_column :plans, :status,:integer
    remove_column :plans, :amount
    remove_column :plans, :payment_frequency

  end
end

我的模特:

代码语言:javascript
复制
class Plan < ApplicationRecord

  enum status: {inactive: 0, active: 1}
  enum interval: {day: 0, week: 1, month: 2, year: 3}

  monetize :price_cents

  def end_date_from(date = nil)
    date ||= Date.current.to_date
    interval_count.send(interval).from_now(date)
  end


end

我读过所有关于money的API规范,但我想不太明白。

如果我运行rails控制台并执行Plan.last.price,它将显示以下错误:

代码语言:javascript
复制
.3.4 :001 > Plan.last.price
  Plan Load (2.6ms)  SELECT  "plans".* FROM "plans" ORDER BY "plans"."id" DESC LIMIT $1  [["LIMIT", 1]]
NoMethodError: undefined method `price_cents' for #<Plan:0x007f8ca807f8f0>
Did you mean?  price_cents=
        from (irb):1

我在这里做错了什么?如何为这个价格属性设置一个值?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-27 15:18:29

查看有关“`money rails”的教程,您将看到他们推荐的迁移是

代码语言:javascript
复制
add_monetize :products, :price # Rails 4x and above

它实际上在模型中创建了一个名为price_cents的整数字段。

您需要进行另一次迁移来删除price,然后使用上面的行将price_cents添加到表中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52540101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档