2012-07-17 19 views
10

hata bilinmeyen özelliğini alıyorum user_id: current_user.stories.build ait user_id ProgID yürütülmesinebilinmeyen özellik:

class User < ActiveRecord::Base 
    has_many :stories, class_name: 'Story', foreign_key: 'user_id', dependent: :destroy 
    ... 

class Story < ActiveRecord::Base 
    belongs_to :user, class_name: 'User', foreign_key: 'user_id' 
    ... 

O 'user_id' içermiyor

create_table "stories", :force => true do |t| 
    t.string "responsible" 
    t.string "descr" 
    t.string "state" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 

    create_table "users", :force => true do |t| 
    t.string "email" 
    t.string "password_digest" 
    t.datetime "created_at",  :null => false 
    t.datetime "updated_at",  :null => false 
    t.string "name" 
    end 

schema.rb alan. Herhangi bir fikir?

cevap

1

Modellerinizdeki ilişkilendirmeyi tanımlamak için stories tablonuzda aşağıdaki gibi bir user_id alanınız olmalıdır.

create_table "stories", :force => true do |t| 
    t.integer "user_id" 
    t.string "responsible" 
    t.string "descr" 
    t.string "state" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    end 
    ... 
end 

Düzenleme

ayrıntılı bir açıklama için Emily'nin cevabı kontrol edin.

27

Kulbir, stories tablonuzda bir user_id sütun tanımlamanız gerektiği konusunda doğru, ancak bunu yapmanın yolu açıklanmadı.

Bu değişikliği yapmanın doğru yolu, yeni bir geçiş oluşturmaktır. Geleneksel olarak, bu add_user_id_to_stories çağrılmalıdır ve (3+ Eğer Rails kullandığınız varsayılarak) aşağıdaki gibi oluşturulabilir olacaktır:

rails generate migration add_user_id_to_stories 

bunu çalıştırırsanız, aslında zaten ihtiyaçları olan değişimi içeren bir göç oluştursun böyle bir şey olması gereken hale getirmek için: Eğer sen dernek adlandırma, ilgili Raylar kuralları takip ederken bir kenara

add_column :stories, :user_id, :integer 

, aslında ekstra şartname bir çok atlayabilirsiniz. User modelinde, yalnızca has_many :stories ve Story modelini belirtin belongs_to :user belirtin. Raylar, belirttiğiniz aynı sınıf isimlerini ve yabancı anahtarları kabul eder.

+0

Teşekkür yeni sözdizimini kullanın ve sembol olarak FIELDTYPE geçmelidir! +1 –

0

Eğer düzeltme ve daha fazla açıklama için

add_column :stories, :user_id, :integer