相关疑难解决方法(0)

如何在布线级别验证 Rails 中的静态参数?

我目前有以下宁静的网址:

/questions/2011/05/
Run Code Online (Sandbox Code Playgroud)

我的提问路线是:

match 'questions/:year/:month/' => 'Questions#month'
Run Code Online (Sandbox Code Playgroud)

如何在路线级别验证上述年份和月份参数,以便:

  1. 年和月是整数
  2. 最短/最长一年长度 = 4
  3. 最小/最大月份长度 = 2

在 django 中,我可以使用以下行执行上述操作:

url(r'^questions/(?P<year>\d{4})/(?P<month>\d{2})/$', 'questions.views.month'),
Run Code Online (Sandbox Code Playgroud)

我正在浏览 Rails 指南并进行谷歌搜索,但在路由级别找不到相应的功能。上述内容是在控制器级别完成的吗?

routes ruby-on-rails-3

5
推荐指数
1
解决办法
2570
查看次数

PG :: InvalidTextRepresentation:ERROR:整数的输入语法无效:"M"

所以我在我的用户模型上有一个性别列,它当前是一个字符串,我想把它改成一个整数并使其成为男'1',女'0'因为它现在是男性"M"女性"F".运行此迁移时:

class ChangeGenderToIntegerOnUser < ActiveRecord::Migration
  def change
    change_column :users, :gender, 'integer USING CAST(gender AS integer)'
  end
end
Run Code Online (Sandbox Code Playgroud)

我收到以下错误:

错误信息:

PG::InvalidTextRepresentation: ERROR:  invalid input syntax for integer: "M"
: ALTER TABLE "users" ALTER COLUMN "gender" TYPE integer USING CAST(gender AS integer)/usr/local/rvm/gems/ruby-2.0.0-p247/gems/activerecord-4.0.0.rc1/lib/active_record/connection_adapters/postgresql/database_statements.rb:128:in `exec'
Run Code Online (Sandbox Code Playgroud)

我该怎么做才能将性别正确地改为整数?

提前致谢!

ruby-on-rails psql ruby-on-rails-4

3
推荐指数
1
解决办法
1万
查看次数