0
message = Message.find(1)
當我這樣做:
message.update_attributes(:created_at => ...)
我在日誌中看到:
SELECT `users`.* FROM `users` WHERE (`users`.`id` = 5) LIMIT 1
UPDATE `messages` SET `created_at` = '2011-08-30 12:41:01', `updated_at` = '2011-08-30 12:41:03' WHERE (`messages`.`id` = 1)
爲什麼它會查詢與id=5
用戶?
一些相關代碼:
class CreateMessages < ActiveRecord::Migration
def self.up
create_table :messages do |t|
t.integer "publisher_id", :null => false
...
t.timestamps
end
add_index("messages", "publisher_id")
execute "ALTER TABLE messages ADD FOREIGN KEY (publisher_id) REFERENCES users(id)"
end
def self.down
drop_table :messages
end
end
你之前設置的過濾器有任何(一個常見的一種可能是?在執行操作之前檢查用戶是否已登錄) – Paul
您確定用戶表查詢不是由您的應用程序的另一部分執行嗎?如在,檢查登錄狀態或設置當前用戶變量等。 –
@Paul:你說得對。這是一個'before_save'。請將其作爲回答發佈... –