2015-03-30 2 views
0

Я пытаюсь перенести мой существующий проект с рельсы 3.2.13 на рельсы 4.2.0. Я решаю вопросы шаг за шагом. Но теперь я как бы застрял.Ошибка при переходе с рельсов 3.2.13 на рельсы 4.2.0

В некоторой модели я определяю некоторые ассоциации с условиями.

В рельсах 3.x.x синтаксис был

has_one :avatar, :class_name => "User", :foreign_key => "user_id", :conditions=>"user_type = 'User'" 

Но в рельсах 4.x.x, от некоторых рельсов учебники, которые я получаю, чтобы узнать, что синтаксис изменился, как и любой из ниже формата.

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

Что находится в строке 20 «app/models/заявитель.rb»? –

+0

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

ответ

1

Попробуйте изменить порядок декларации к этому:

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

Из documentation для has_one, мы можем видеть, подпись:

has_one (название, сфера = ноль, опции = {})

То есть, ваш прицел поставляется перед вашими вариантами.

+0

Спасибо, Сработало. – apr