仕事と企業の間には1対多の関係があり、うまく機能しています。求人フォームビューには、オートコンプリート機能を備えた会社名のtext_fieldがあります。オートコンプリートは正常に機能しますが、オートコンプリートリストに存在しない会社名を入力した場合、find_or_create_byは新しい会社を作成しません。
def company_name
company.try(:name)
end
def company_name=(name)
@company = Company.find_or_create_by(name: name)
end
この回答 をご覧ください。
かつては
@company = Company.find_or_create_by_name(name)
in Rails 4は今
@company = Company.find_or_create_by(name: name)
Rails 4でこれを行う別の方法は次のとおりです。
@company = Company.where(name: name).first_or_create
Company.find_or_create_by(name: name)
すぐに使えるはずです。レコードの作成を妨げることができるのは、検証エラーだけです。
Rails console
動作するかどうかを確認します。また、検証エラーも確認してください。
name = "YOUR TEXT FOR NAME ATTRIBUTE"
c = Company.find_or_create_by(name: name)
puts c.errors.full_messages
このメソッドは、Rails 4。
Rails4リリースメッセージ:
古いスタイルのハッシュベースのFinder APIを廃止しました。これは、以前は「Finderオプション」を受け入れていたメソッドが実行しないことを意味します。
非推奨のメソッドですが、動作するはずです。たぶん、Railsは現在サポートしていません。
詳細情報を取得できます ここをクリック および11.2 Deprecations
。