从 rails 3.2.13 迁移到 rails 4.2.0 时出错
Error while migrating from rails 3.2.13 to rails 4.2.0
我正在尝试将现有项目从 rails 3.2.13 迁移到 rails 4.2.0 .我正在逐步解决问题。但现在我有点卡住了。
在某些模型中,我定义了一些与条件的关联。
在 rails 3.x.x 中语法是
has_one :avatar, :class_name => "User", :foreign_key => "user_id", :conditions=>"user_type = 'User'"
但是在 rails 4.x.x 中,从一些 rails 教程中我了解到语法像以下任何格式一样发生了变化。
has_one :avatar, class_name: "User", foreign_key: "user_id", -> { where("user_type= 'Applicant'") }
或
has_one :avatar, class_name: "User", foreign_key: "user_id", -> { where user_type: 'Applicant' }
两种语法我都试过了。但是在启动服务器时它抛出了以下我无法弄清楚的错误。
root_path/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:457:in `load': root_path/app/models/applicant.rb:20: syntax error, unexpected '\n', expecting => (SyntaxError)
所以请帮助任何人。不解决这个问题我就不能继续了。
谢谢。
尝试将声明的顺序更改为:
has_one :avatar, -> { where("type = 'Applicant'") }, class_name: "Assets", foreign_key: "applicant_id"
从documentation for has_one
,我们可以看到签名是:
has_one(name, scope = nil, options = {})
也就是说,您的范围在您的选项之前。
我正在尝试将现有项目从 rails 3.2.13 迁移到 rails 4.2.0 .我正在逐步解决问题。但现在我有点卡住了。
在某些模型中,我定义了一些与条件的关联。
在 rails 3.x.x 中语法是
has_one :avatar, :class_name => "User", :foreign_key => "user_id", :conditions=>"user_type = 'User'"
但是在 rails 4.x.x 中,从一些 rails 教程中我了解到语法像以下任何格式一样发生了变化。
has_one :avatar, class_name: "User", foreign_key: "user_id", -> { where("user_type= 'Applicant'") }
或
has_one :avatar, class_name: "User", foreign_key: "user_id", -> { where user_type: 'Applicant' }
两种语法我都试过了。但是在启动服务器时它抛出了以下我无法弄清楚的错误。
root_path/.rvm/gems/ruby-2.0.0-p353/gems/activesupport-4.2.0/lib/active_support/dependencies.rb:457:in `load': root_path/app/models/applicant.rb:20: syntax error, unexpected '\n', expecting => (SyntaxError)
所以请帮助任何人。不解决这个问题我就不能继续了。
谢谢。
尝试将声明的顺序更改为:
has_one :avatar, -> { where("type = 'Applicant'") }, class_name: "Assets", foreign_key: "applicant_id"
从documentation for has_one
,我们可以看到签名是:
has_one(name, scope = nil, options = {})
也就是说,您的范围在您的选项之前。