0

メールボックスの gem の通知を行う移行に 2 つの列を追加したいと考えました。通知を作成する移行に両方を配置してから移行を実行すると、移行が完了します。次に、それらをフォームに入力し、送信するとエラーは発生せず、ログにはそれらが取得されたことが示されます。なぜか表示しようとしても表示されず、表示されているのは移動の一部であった元のオブジェクトであるサブジェクトとボディだけです。私の質問は、この移行に列を追加するにはどうすればよいですか?

これは、緯度と経度の 2 つの列を通知セクションに追加した移行です。

 # This migration comes from mailboxer_engine (originally 20110511145103)
 class CreateMailboxer < ActiveRecord::Migration
   def self.up    
   #Tables
     #Conversations
      create_table :conversations do |t|
        t.column :subject, :string, :default => ""
        t.column :created_at, :datetime, :null => false
        t.column :updated_at, :datetime, :null => false
     end    
      #Receipts
     create_table :receipts do |t|
       t.references :receiver, :polymorphic => true
       t.column :notification_id, :integer, :null => false
       t.column :read, :boolean, :default => false
       t.column :trashed, :boolean, :default => false
       t.column :deleted, :boolean, :default => false
       t.column :mailbox_type, :string, :limit => 25
       t.column :created_at, :datetime, :null => false
       t.column :updated_at, :datetime, :null => false
     end    
      #Notifications and Messages
     create_table :notifications do |t|
       t.column :type, :string
       t.column :body, :text
       t.column :subject, :string, :default => ""
       t.column :lat, :text
       t.column :long, :text
       t.references :sender, :polymorphic => true
       t.references :object, :polymorphic => true
       t.column :conversation_id, :integer
       t.column :draft, :boolean, :default => false
       t.column :updated_at, :datetime, :null => false
       t.column :created_at, :datetime, :null => false
     end    


   #Indexes
     #Conversations
     #Receipts
     add_index "receipts","notification_id"

     #Messages  
     add_index "notifications","conversation_id"

   #Foreign keys    
     #Conversations
     #Receipts
     add_foreign_key "receipts", "notifications", :name => "receipts_on_notification_id"
     #Messages  
     add_foreign_key "notifications", "conversations", :name =>  "notifications_on_conversation_id"
   end

   def self.down
   #Tables      
     remove_foreign_key "receipts", :name => "receipts_on_notification_id"
     remove_foreign_key "notifications", :name => "notifications_on_conversation_id"

   #Indexes
     drop_table :receipts
     drop_table :conversations
     drop_table :notifications
   end
 end

私のショービューは次のようになります

 %h1= conversation.subject
 %ul
   = content_tag_for(:li, conversation.receipts_for(current_user)) do |receipt|
     - message = receipt.message
     %h3= message.subject
     %p= message.body
     %p= message.lat
     %p= message.long

 = render 'messages/form', conversation: conversation

これは、コンソールに表示されるものです。緯度と経度では、null と表示されます。

   Notification Load (0.1ms)  SELECT "notifications".* FROM "notifications" ORDER BY   "notifications"."id" DESC LIMIT 1
 --- !ruby/object:Message
 attributes:
   id: 4
   type: Message
   body: game
   subject: wiz
   lat: !!null 
   long: !!null 
   sender_id: 1
   sender_type: User
   conversation_id: 2
   draft: false
   updated_at: 2013-03-10 04:37:54.984277000Z
   created_at: 2013-03-10 04:37:54.984277000Z
   notified_object_id: !!null 
   notified_object_type: !!null 
   notification_code: !!null 
   attachment: !!null 
  => nil 
4

1 に答える 1

0

あなたが何をしているのか正確にはわかりませんが、attr_accessibleに2つの新しい列を追加しておらず、そのために保存されていない可能性があります。それが私が最初にチェックすることです(それはモデルにあります)。

それ以外の場合は、コンソールに移動して、新しい列がそこにあるかどうかを確認し、それらにデータがあるかどうかを確認します。それはあなたが問題がどこにあるかを見つけるのに役立ちます。

于 2013-03-09T11:19:37.083 に答える