Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/64.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/matlab/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Rails 2.3.9-范围、全部删除、全部更新_Mysql_Ruby On Rails_Scope - Fatal编程技术网

Mysql Rails 2.3.9-范围、全部删除、全部更新

Mysql Rails 2.3.9-范围、全部删除、全部更新,mysql,ruby-on-rails,scope,Mysql,Ruby On Rails,Scope,我有一个叫RaceWeek的模型。我要执行的两个操作: 1我想使用以下条件确定记录的范围: "start_date <= #{Time.now} AND end_date >= #{Time.now} AND recordable_type != 'User'" 然后我想删除所有这些记录。以下是我现在如何尝试: RaceWeek.delete_all("start_date <= #{Time.now} AND end_date >= #{Time.now} AND r

我有一个叫RaceWeek的模型。我要执行的两个操作:

1我想使用以下条件确定记录的范围:

"start_date <= #{Time.now} AND end_date >= #{Time.now} AND recordable_type != 'User'"
然后我想删除所有这些记录。以下是我现在如何尝试:

RaceWeek.delete_all("start_date <= #{Time.now} AND end_date >= #{Time.now} AND recordable_type != 'User'")
2删除所有记录后,我想重置剩余记录的值。以下是我现在如何尝试做到这一点:

RaceWeek.find(:all, :conditions => ["start_date <= #{Time.now} AND end_date >= #{Time.now}"]).update_all("games_won = 0, games_lost = 0")

在不讨论我遇到的所有问题的情况下,您能解释一下您通常是如何执行这些类型的操作的吗?

我想我明白您在尝试做什么了。。但我认为有更好的方法可以解决这个问题。我不确定您正在执行的操作的上下文,因此您可以用更合适的名称替换以下命名的\u范围名称,但如果您有类似的名称:

#Your RaceWeek Model
class RaceWeek < ActiveRecord::Base

named_scope :started_before_and_ended_after_today, :conditions => ["start_date <= #{Time.now} AND end_date >= #{Time.now}"]

named_scope :not_recordable_user, :conditions => ["recordable_type != 'User'"]

end
RaceWeek.started_before_and_ended_after_today.not_recordable_user.find(:all)
现在,您可以随时将命名的_范围链接在一起。但是看起来你正在尝试做一些合理重复的事情,所以你不必每次都在每个控制器上写出来,你只需要在你的RaceWeek模型上创建一个类方法就可以了。下面的模型也可以进行更多的折射,但希望这能帮助您开始:

#Your RaceWeek Model
class RaceWeek < ActiveRecord::Base

named_scope :started_before_and_ended_after_today, :conditions => ["start_date <= #{Time.now} AND end_date >= #{Time.now}"]

named_scope :not_recordable_user, :conditions => ["recordable_type != 'User'"]

def self.reset_records
  started_before_and_ended_after_today.not_recordable_user.delete_all   
  started_before_and_ended_after_today.each { |record| record.update_attributes(:games_won => 0, :games_lost => 0)}      
end

end
#Your RaceWeek Model
class RaceWeek < ActiveRecord::Base

named_scope :started_before_and_ended_after_today, :conditions => ["start_date <= #{Time.now} AND end_date >= #{Time.now}"]

named_scope :not_recordable_user, :conditions => ["recordable_type != 'User'"]

def self.reset_records
  started_before_and_ended_after_today.not_recordable_user.delete_all   
  started_before_and_ended_after_today.each { |record| record.update_attributes(:games_won => 0, :games_lost => 0)}      
end

end
RaceWeek.reset_records