0

今週末、Rails 4 を試してみることにしましたが、すぐに次の問題に遭遇しました。

私は 2 つのモデルを持っています (あなたが疑問に思っている場合に備えて、OpenSchema を試してみたかったのです):

記録

has_many :ns_attributes

NsAttribute

belongs_to :record

コンソールで:

record = Record.create!(name: "blowing in the wind")
nsa = NsAttribute.new(key: "artist", value: "bob dylan", record: record)


#<NsAttribute id: nil, key: "artist", value: "bob dylan", record_id: 4, created_at: nil, updated_at: nil>

irb(main):007:0> nsa.save!
(0.4ms)  BEGIN
Record Exists (0.7ms)  SELECT 1 AS one FROM "records" WHERE "records"."name" IS NULL LIMIT 1
(0.2ms)  COMMIT
=> true
irb(main):008:0> nsa
=> #<NsAttribute id: nil, key: "artist", value: "bob dylan", record_id: nil, created_at: nil, updated_at: nil>

ご覧のとおり、レコードは保存されませんでした (record_id: nil)。

  • 私はまた、class_nameとforeign_keyをbeels_toメソッドに変更せずに追加しようとしました。
  • ARモデル名のせいでしょうか?("記録")
  • 2 つのモデルの検証はありません

何が起こっているのかについての手がかりは大歓迎です!

4

2 に答える 2

1

私は同じ問題を抱えています。これは Rails 4 のバグのようです。テスト ケースは次のとおりです。

https://gist.github.com/jemmyw/8163504

そして、ここに問題があります:

https://github.com/rails/rails/issues/13522

レコードの関連付けがあるモデルの下に次のスニペットを追加することで、モデルごとに修正できます。

NsAttribute::GeneratedFeatureMethods.module_eval %Q{
  def create_record(*args, &block)
    super
  end
}
于 2013-12-28T20:19:01.353 に答える
0

代わりにこれを試してください:

record.ns_attributes.create!(key: "artist", value: "bob dylan")
于 2013-07-08T10:30:47.977 に答える