1
次のような別の方法があるかどうか不思議です。find_or_create_by hmtアソシエーションを使用して重複するレコードを作成しようとしています
セットアップ:2、名前:C2(IDと
class Cabin < ApplicationRecord
has_many :feature_groupings
has_many :features, through: :feature_groupings
end
class Feature < ApplicationRecord
has_many :feature_groupings, dependent: :destroy
has_many :cabins, through: :feature_groupings
validates_uniqueness_of :name
end
class FeatureGrouping < ApplicationRecord
belongs_to :feature
belongs_to :cabin
end
c1 = Cabin.create(name: "Standard")
c2 = Cabin.create(name: "Luxury")
c1.features.create(name: "Wifi")
f = c2.features.find_or_create_by(name: "Wifi")
これは
2.4.0 :006 > f.errors.full_messages
=> ["Name has already been taken"]
につながる機能( "無線LAN":1、名前id)を関連付けるクリーナー方法はあります:単により「ラグジュアリー」):
c2.features << Feature.find_or_create_by(name: "Wifi")
私はにHMTの関連付けを使用して、レールの魔法のいくつかの並べ替えがあると予想していました機能です。
Railsのバージョン:5.0.1
Rubyのバージョン:2.4.0