2016-04-04 21 views
0

Tek bir kullanıcı bağlı fazla mesaj olması manifatura hizmeti inşa ediyorum. İletilerin, from_number yoluyla kullanıcı tablosuna endekslenmesini istiyorum. Yaptığım şey aşağıda, ama bir yöntem hatası alıyorum.# için tanımsız yöntem `belongs_to' Alma <ActiveRecord :: Göç: Hata

aşağıdaki iki model tanımlamış:

1) Aşağıdaki

class Message < ActiveRecord::Base 
    belongs_to :user 
end 

2) User.rb

class User < ActiveRecord::Base 
    has_many :messages 
end 

message.rb deniyorum göç dosyasıdır tırmık db yoluyla çalıştırılır: geçiş:

aşağıdaki hatayı almaya devam:

-- belongs_to(:user) 
-- belongs_to(:user) 
rake aborted! 
NoMethodError: undefined method `belongs_to' for #<ActiveRecord::Migration:0x007ff453826f50> 
Ben has_many tanımlamak

ve modelde dernekler belongs_to, ama burada Bölüm 2.1 uyarınca: Müşteri, endeksi: http://guides.rubyonrails.org/association_basics.html

ben "t.belongs_to eklemek : true "taşıma dosyasının satırı".

Yardımlarınız için teşekkür ederiz!

+1

kullandığınız rayların hangi sürümü:

Her durumda

, sadece sütun ve indeks kendiniz ekleyebilir? Lütfen raylar -v'yi çalıştırın ve cevabınızı güncelleyin. Müşteri, endeksi: 'niye TRUE: customer' Eğer Raylar 3. –

+0

' t.belongs_to çalışıyor olabilir bu yüzden 'taşıma işlemlerinde belongs_to' Raylar sonraki sürümlerinde eklendi? – 7urkm3n

+0

@ philip-cortes'i merak ettiğiniz rayların hangi versiyonunu kullanıyordunuz? OP benzer bir hata alıyorum diye –

cevap

0

taşımanıza t.references :user, index: true kullanmayı deneyin ..

+0

'belongs_to' sadece references'' bir diğer adıdır. https://github.com/rails/rails/blob/88aa2efd692619e87eee88dfc48d608bea9bcdb4/activerecord/lib/active_record/connection_adapters/abstract/schema_definitions.rb#L421 –

0

Sen Mesajlar tabloda user_id eksik.

Run rake db:drop ardından iletiler taşımadan bu satırı kaldırın. Komut satırında

t.belongs_to :user, index: true

çalıştırın bu: Mümkün daha önceki bir kullandığınız

rails g migration add_user_id_to_messages user_id:interger 

ve

rake db:migrate 
+0

Bu OP soruya cevap vermez. 'Belongs_to' göçte ve raylar sizin için user_id 'i yaratmak için kullanıyor. –

+0

Korkarım Leo bu konuda haklı. sadece eğlence için –

+0

@PhilipCortes, Yorum yapmadan 'belongs_to: user' hattı ve yeniden başlatma sunucu hala aynı sorunu olan görmenizi sağlar. – 7urkm3n

0

Raylar 4'te eklenmiştir taşıma işlemlerinde belongs_to sözdizimi mı versiyon?

t.integer :user_id, index: true

İlgili konular