###前提・実現したいこと
初歩的な質問で大変恐縮ですが、ご教示ください。
現在、Railsでアプリケーションを作成しています。
一つの画面から入力した内容で複数テーブルを更新すべく、
accepts_nested_attributes_for を使用して実装したところ、
controller の newメソッドで「NameError」が発生します。
色々試してみましたが、何が原因か分からず質問した次第です。
###発生している問題・エラーメッセージ
NameError in TradesystemsController#new uninitialized constant Tradesystem::Tradecondition ActiveRecord::StatementInvalid (PG::UndefinedTable: ERROR: relation "trade_conditions_tradesystems" does not exist LINE 5: WHERE a.attrelid = '"trade_conditions_tradesy... : SELECT a.attname, format_type(a.atttypid, a.atttypmod), pg_get_expr(d.adbin, d.adrelid), a.attnotnull, a.atttypid, a.atttypmod FROM pg_attribute a LEFT JOIN pg_attrdef d ON a.attrelid = d.adrelid AND a.attnum = d.adnum WHERE a.attrelid = '"trade_conditions_tradesystems"'::regclass AND a.attnum > 0 AND NOT a.attisdropped ORDER BY a.attnum
###該当のソースコード
app/controllers/tradesystems_controller.rb
class TradesystemsController < ApplicationController def new @tradesystems = current_user.tradesystems.new #↓この行でエラーが発生 @tradeconditions = @tradesystems.tradeconditions.build end end
app/models/user.rb
class User < ActiveRecord::Base # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :trackable, :validatable has_many :indicators, dependent: :destroy has_many :tradesystems, dependent: :destroy end
app/models/tradesystem.rb
class Tradesystem < ActiveRecord::Base belongs_to :user has_and_belongs_to_many :tradeconditions accepts_nested_attributes_for :tradeconditions end
app/models/trade_condition.rb
class TradeCondition < ActiveRecord::Base has_and_belongs_to_many :tradesystems end
###試したこと
当初、「1対多(tradesysytem 1:tradecondition 多」の関係で実装していたためことが間違いかと思い、「多対多」の関係にし、中間テーブルを介して実装しましたが、同じエラーとなりました。
また、エラー行の「tradeconditions」の指定の仕方が誤っていると思い、
「trade_condiotions」や「trade_condiotion」など指定してみましたが、ダメでした。
手がかりになる情報等がありましたら、よろしくお願いいたします。
あなたの回答
tips
プレビュー