【发布时间】:2012-01-22 16:15:52
【问题描述】:
class Program < ActiveRecord::Base
belongs_to :channel
end
class ProgramSchedule < ActiveRecord::Base
belongs_to :program
end
Schema.rb
create_table "channels", :force => true do |t|
t.string "site"
t.string "name"
t.string "icon"
t.string "type"
t.string "country"
t.integer "ordertab"
t.datetime "created_at"
t.datetime "updated_at"
t.boolean "homepage"
end
add_index "channels", ["site"], :name => "index_channels_on_site", :unique => true
create_table "program_schedules", :force => true do |t|
t.integer "program_id"
t.datetime "start"
t.datetime "stop"
end
add_index "program_schedules", ["program_id"], :name => "index_program_schedules_on_program_id"
create_table "programs", :force => true do |t|
t.integer "channel_id"
t.string "title"
t.string "subtitle"
t.text "description"
t.float "official_rating"
t.float "rating"
t.string "type"
t.integer "likes"
t.datetime "created_at"
t.datetime "updated_at"
end
add_index "programs", ["channel_id"], :name => "index_programs_on_channel_id"
add_index "programs", ["title", "channel_id"], :name => "index_programs_on_title_and_channel_id", :unique => true
我必须运行这个 SQL 查询:
DELETE program_schedules.*
FROM program_schedules INNER JOIN programs ON program_schedules.pid = programs.id
WHERE programs.channel_id = '1'
AND (
program_schedules.start >= '2011-12-12'
AND program_schedules.start <= '2011-12-12'
)
在 Ruby on Rails 中...
ProgramSchedule.joins(:program).delete_all(
:start => (dates_array.min)..(dates_array.max),
:programs => {:channel_id => 1}
)
错误:(ActiveRecord::StatementInvalid) /Library/Ruby/Gems/1.8/gems/activerecord-3.1.3/lib/active_record/connection_adapters/mysql2_adapter.rb:283:in `query':
Mysql2::Error: Unknown column 'programs.channel_id' in 'where clause':
DELETE FROM `program_schedules` WHERE `programs`.`channel_id` = 1 AND (`program_schedules`.`start` BETWEEN '2011-12-09 23:00:00' AND
'2011-12-10 22:20:00')
【问题讨论】:
-
你能发布你的表结构吗?
-
好的,发布表结构@BryceAtNetwork23
标签: ruby-on-rails ruby ruby-on-rails-3 activerecord join