2014-10-30 11 views
15

Ben bir taşıma gerçekleştirmek çalıştığımda aşağıdaki alıyorum:Tanımsız yöntemi `sütun' Foreigner :: ConnectionAdapters için :: ForeignKeyDefinition

class CreateAdvertisement < ActiveRecord::Migration 
    def change 
    create_table :advertisement do |t| 
     t.integer :issue_id, null: false 
     t.string :client_name, null: false 
     t.decimal :size, null: false 
     t.decimal :price, null: false 
     t.decimal :commission_amount, null: false 
     t.string :first_payment, null: false 
     t.string :second_payment, null: false 

     t.timestamps null: false 
     t.foreign_key :issue 
    end 
    end 
end 

I: Burada

NoMethodError: undefined method `column' for #<Foreigner::ConnectionAdapters::ForeignKeyDefinition:0x007fa020938740> 

göç ​​kodu Foreigner 1.6.1 yüklü, Rails 4.2.0 var. Herhangi bir fikir?

cevap

22

Siz veya taşlar biri raylar 4.2.0

Bunu güncelleyebilir veya bu bağımlılığı kaldırmalısınız ile kullanımdan kaldırıldı 'yabancı' taş kullanın. Belki birisi zaten örneğin i 'mailboxer' taş ve zaten bir şube oluşturmak için projeyi çatallı 'github.com/div' kullanın yaptı, bu yüzden benim Gemfile değişti:

gem 'mailboxer', :git => 'git://github.com/div/mailboxer.git', :branch => 'rails42-foreigner' 
+1

Github tartışma çok başka yaklaşımlar içeren bu soruna, etrafında Ayrıca bakınız: https://github.com/mailboxer/mailboxer/issues/316 –

18

Değilsin Zaten yabancı anahtar desteğine sahip olduğundan Rails 4.2 ile yabancıya ihtiyaç duyuyorsunuz. Sözdizimi yabancıya çok benzer (aynı olmamasına rağmen).

Bkz: http://edgeguides.rubyonrails.org/4_2_release_notes.html#foreign-key-support

+2

Bu Rails 4.2 beri doğru cevap olmalı yabancı anahtar tanımı sözdizimini destekler. – Santosh

+0

on_delete: on: seçeneğini kullanmak yerine bağımlı:: silme – WiredIn

+0

Bu doğru cevap olmalıdır. Sadece 'yabancı' Gemfile 'dan kaldırılması sorunu giderir. –