【问题标题】:Ruby migration fileRuby 迁移文件
【发布时间】:2014-04-18 17:23:02
【问题描述】:

在我的网络应用程序上,我有一个日、月、年的下拉框。我的控制器中有一个临时渲染,以查看发送到数据库的内容,以便知道要迁移的内容。但是日、月、年字段在下面发送。但是 Rails 生成模型不喜欢括号。你怎么过来的?任何帮助将不胜感激。

"date(3i)"=>"18", "date(2i)"=>"4", "date(1i)"=>"2014"


def change
create_table :posts do |t|
  t.text :title
  t.text :requester
  t.text :requester_email
  t.text :customer
  t.text :contact
  t.text :customer_email
  t.text :customer_phone
  t.string :type_of_change
  t.string :date(3i)

  t.timestamps

【问题讨论】:

  • 你是什么意思“不喜欢刹车”,以及示例中的 3i,2i,1i 是什么。
  • 好的,所以有 3 个下拉框,日/月/年,日期框发送 date(3i)=>18 到数据库我不知道 3i 位从哪里生成。
  • 当我做 rails generate model Post date(3i):string 它不喜欢括号。
  • 请提供失败的代码

标签: ruby-on-rails ruby


【解决方案1】:

这应该只是一个名为 date 的字段,类型为 date。

(3i) 业务依赖于 rails 的多参数分配系统。您在模型中有一个值(日期),但操作它们的 UI 将其分解为年/月/日。

每个年/月/日参数都与日期有关,后缀表示哪个参数是哪个。当参数如

"date(3i)"=>"18", "date(2i)"=>"4", "date(1i)"=>"2014"

被分配给一个日期属性,rails 知道使用Date::civil 来生成日期。 (1i) 后缀告诉 rails 将 '2014' 类型转换为整数并将其用作Date::civil 的第一个参数,依此类推

【讨论】:

  • 好的,那么当我运行 rails generate model Post xxxx 时我应该输入什么来允许这个?
  • date:date 会处理这个
  • 好的,我似乎在分配多参数属性时遇到了这 1 个错误 [错误分配 [18, 4, 2014] 至今(未定义的方法 `klass' 用于 nil:NilClass)]
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-04
  • 1970-01-01
  • 1970-01-01
  • 2011-09-16
  • 1970-01-01
  • 2021-06-08
相关资源
最近更新 更多