10

Rails ile Yığın Taşması ve Çevik Geliştirme hakkında etrafa baktım ama ihtiyacım olan tüm parçaları yanıtlayan hiçbir şey bulamadım.Rails Modelinin Yanlış Çoğaltılması

Raylarda yeni bir İnek modeli ürettim. Görünüşe göre, Raylar inek antika çoğul ("kine") kullanan, bu yüzden bu modeli oluştururken, bir Kine göç inşa:

class CreateKine < ActiveRecord::Migration 
    def change 
    create_table :kine do |t| 
     t.string :name 
     t.string :farm 
     t.string :breed 

     t.timestamps 
    end 
    end 
end 

Ben modelin .rb dosyasına gidip geri set_table_name biliyorum İnek, ama ilişkili kontrolörler için endişeleniyorum. Bir İnek denetleyicisi oluşturursam, senkronize olmaz mı?

İnek/İnekler olmak için her şeyi nasıl alabilirim? Teşekkürler. Bu benim ilk uygulamalardan biridir ve denetleyici modeli ilişkilendirmelerini yöneterek zaten kafam karışmış durumda, bu nedenle bu sorun sorunu yardımcı olmuyor.

+4

(https://github.com/rails/rails/commit/c300dca9963bda78b8f358dbcb59cabcdc5e1dc9). Gelecek sürümler, "inek" ini "inek" olarak doğru bir şekilde etkileyecektir. –

+2

Duymak güzel. Her ne kadar 14th yüzyıl Anglo-Saxon sığır sürüsünü optimize etmek için Rails 4 uygulaması yazmak isteyen herkes için emecek. – Sasha

cevap

26

burada dönüm oluşturma bir örnek:

yapılandırma> ilklendiriciler> inflections.rb tabloyu yeniden adlandırmak için

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'cow', 'cows' 
end 
+0

Harika. Ve sonra sadece komisyonu db çalıştırın: tekrar göç? – Sasha

+0

Ya da modeli geri almalı ve sonra tekrar oluşturmalı mıyım? – Sasha

+3

Doğru cevap budur. @Sasha, sadece göçü silin ve jeneratörü yeniden çalıştırın; Bu sefer "İnekler" üretmeli. –

2

Dene:

class RenameKineToCows< ActiveRecord:Migration 

    def up 
    rename_table :kine, :cows 
    end 
    def down 
    rename_table :cows, :kine 
    end 
end 

uygulamanızı yeniden adlandırma /models/kine.rb cow.rb dosyasına gidin ve dosyayı düzenleyin

class Cow < ActiveRecord::Base 

    self.table_name = 'Cow' 
end 

dosyayı

class KineController < ApplicationController 

için

class CowsController < ApplicationController 
cows_controller.rb ve düzenlemek için uygulama/denetleyicileri/kine_controller.rb yeniden adlandırma routes.rb 10

ve düzenleme config/

resources :kine 

için

Bu oldukça gizli düzensiz büküm [birkaç gün önce Raylar kaldırıldı] yapıldı
resources :cows 
+0

Çok teşekkürler! Sadece iki kere kontrol ediyorum. En üstte yazdığın göçte, kendi kendine ve kendini düzelmeli mi? Ya da kendini yapmalı.aşağı "rename_table: inekler,: kine"? – Sasha

+0

Ops, haklısın. Beni düzelttiğin için teşekkürler :) –