2017-02-07 18 views
1

私は作曲と言語の関係を持っています。 1つの構成は1つの唯一の言語で記述する必要があります。マイschema.rbrails_admin:変更された関係、フォームが正しくありません

は、次の行が含まれます。

... 
create_table "compositions", force: :cascade do |t| 
    ... 
    t.integer "product_language_id", null: false 
end 

... 
add_foreign_key "compositions", "languages", column: "product_language_id" 
... 

私は関係が間違って書かれていたことに気づいをので、私はこのようになりモデルを変更:

  • が以前でbelongs_to :languageラインがありましたcomposition.rbhas_one :language
  • 以前にはlanguage.rbhas_many :compositions行がありました私が正しい作られた手順は次のとおりです。最初の質問belongs_to :composition

編集に変わったのか?私はまだRuby on Railsの初心者です。

今、rails_adminでは、newフォームの下で言語を選択することはできません。リストはありますが、リストもボックスも何もなく、ラベル名 'language'だけですそのテーブルに

編集2:関係を元の状態に戻したら、間違っているはずですが、rails_adminには言語フォームのコンポジションを追加する可能性がありますが、ドロップダウンメニューも表示されていない言語を選択するための構成フォーム。なにか提案を?

私がどこにいないのか教えていただけますか?おかげで、私はそれがcomposition.rbの外部キーを加えて元のbelongs_to/has_many状態の関係を残す修正this upwork freelancerに事前に

答えて

0

ありがとう:

belongs_to :language, :foreign_key => 'product_language_id' 

Railsはすべてが慣例に従って行うことを前提としています。テーブルの外部キーはtablename_idであると予想されます。規約から逸脱したときには、私たちのモデルにオプションを追加して、Railsに外部キーが期待通りではないということを伝える必要があります。 このように書くこともできます:

belongs_to :product_language, class_name: 'Language' 
関連する問題