0

このコードを考えると:

class Word < ActiveRecord::Base
  has_and_belongs_to_many :definitions
end

class Definition < ActiveRecord::Base
  has_and_belongs_to_many :word
  validates :word, presence: true
end

mysql> show columns from definitions_words;
+---------------+---------+------+-----+---------+-------+
| Field         | Type    | Null | Key | Default | Extra |
+---------------+---------+------+-----+---------+-------+
| definition_id | int(11) | NO   | PRI | NULL    |       |
| word_id       | int(11) | NO   | PRI | NULL    |       |
+---------------+---------+------+-----+---------+-------+

私が電話するとき:

word = Word.first
word.definitions.create!

私は得る:

ActiveRecord::RecordInvalid (Validation failed: Word can't be blank)
4

1 に答える 1

1

まず、Definitionクラスの関係が間違っています。複数形にする必要があります!:words

2番目:検証も間違っています。複数形にする必要があります。例::wordsを検証します

このように、関係の代わりに名前wordのフィールドが空白にならないことを期待します。

サンプルコードを次のように変更してみてください。

word = Word.first
definition = Definition.new
definition.words = [word]
definition.save
于 2013-01-17T17:35:49.767 に答える