从rails 3.2.13迁移到rails 4.2.0时出错

时间:2015-03-30 12:39:21

标签: ruby-on-rails ruby ruby-on-rails-4 ruby-on-rails-3.2

我正在尝试将现有项目从 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)

所以请帮助任何人。如果不解决这个问题,我就无法继续。

感谢。

1 个答案:

答案 0 :(得分:1)

尝试将声明的顺序更改为:

has_one :avatar, -> { where("type = 'Applicant'") }, class_name: "Assets", foreign_key: "applicant_id"

has_one的{​​{3}},我们可以看到签名是:

  

has_one(name,scope = nil,options = {})

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