2013-11-26 3 views
0

В настоящее время я обновляю свое приложение на rails 4.i знаю, что есть некоторые синтаксические изменения, сделанные для записи областей в rails4 для оператора SQL. ниже объем в рельсах 3:Как написать Rails 4 для SQL-запроса?

scope :current_active_leases,  group("leases.id").where("leases.commencement <= ? and (leases.expiration >= ? or leases.mtm=?) and leases.is_executed= ? ", Time.now.strftime("%Y-%m-%d"), Time.now.strftime("%Y-%m-%d"), true, true) 

как переписать это в рельсах 4

+1

У вас есть ошибка в вашем объеме. Он должен быть помещен в лямбда - иначе ваши даты будут оцениваться один раз, при выполнении кода класса. Это также относится к Rails 3. –

ответ

1

Я думаю, что когда-нибудь вы написали должны работать, но в рельсах 4, вы должны написать как

scope :current_active_leases, -> {group("leases.id").where("leases.commencement <= ? and (leases.expiration >= ? or leases.mtm=?) and leases.is_executed= ? ", Time.now.strftime("%Y-%m-%d"), Time.now.strftime("%Y-%m-%d"), true, true) } 

Проверьте документацию http://api.rubyonrails.org/classes/ActiveRecord/Scoping/Named/ClassMethods.html#method-i-scope

Смежные вопросы