B S*_*ven 22 activerecord ruby-on-rails scaffolding ruby-on-rails-3
从Ruby on Rails:处理货币/货币的最佳方法,您如何为以下内容生成脚手架:
add_column :items, :price, :decimal, :precision => 8, :scale => 2
Run Code Online (Sandbox Code Playgroud)
如:
rails generate scaffold LineItem name:string \
price:decimal {:precision => 8, :scale => 2}
Run Code Online (Sandbox Code Playgroud)
此外,十进制类型的"额外描述"的正确术语是什么?
使用Rails 3.07,Ruby 1.92
sca*_*er2 51
在Rails 3.1及更低版本中,语法是
rails generate scaffold LineItem name:string price:decimal
Run Code Online (Sandbox Code Playgroud)
然后手动将十进制属性添加到迁移文件
t.decimal :price, :precision => 8, :scale => 2
Run Code Online (Sandbox Code Playgroud)
在Rails 3.2中,可以指定小数属性
rails generate scaffold LineItem name price:decimal{8,2}
Run Code Online (Sandbox Code Playgroud)
注意:如果您正在运行ZSH,则语法需要连字符而不是逗号.
rails generate scaffold LineItem name price:decimal{8-2}
Run Code Online (Sandbox Code Playgroud)
另一个注意:如果您在Mac OS X 10.9下使用bash,请尝试使用点而不是逗号
rails generate scaffold LineItem name price:decimal{8.2}
Run Code Online (Sandbox Code Playgroud)
rka*_*see 12
几年后,使用Rails 4.2和bash(Linux),以下生成器命令可以正常工作:
bin/rails generate scaffold LineItem name:string price:decimal{8.2}
Run Code Online (Sandbox Code Playgroud)
这将正确生成以下示例迁移:
class CreateLineItems < ActiveRecord::Migration
def change
create_table :line_items do |t|
t.string :name
t.decimal :price, precision: 8, scale: 2
t.timestamps null: false
end
end
end
Run Code Online (Sandbox Code Playgroud)