我正在尝试将现有项目从 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)
所以请帮助任何人。如果不解决这个问题,我就无法继续。
感谢。
答案 0 :(得分:1)
尝试将声明的顺序更改为:
has_one :avatar, -> { where("type = 'Applicant'") }, class_name: "Assets", foreign_key: "applicant_id"
从has_one
的{{3}},我们可以看到签名是:
has_one(name,scope = nil,options = {})
也就是说,您的范围在您的选项之前。