从 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 = {})

也就是说,您的范围在您的选项之前。