1

私はRubyが初めてで、OTJを学んでいます。私は何日もこの問題に取り組んでおり、has_many :through パターンに関する他の多くの投稿を読みました。

MySQL で RubyMine 5.4 と ruby​​-1.9.3-p194 を使用しています

3 つのモデルがあり、ネストされた関係を追加、削除、編集できる必要があります。

アイデアは、どのユーザーも多くのビジネス競合グループを持つことができるということです。グループ (同じ group_id を持つ) には 1 つのターゲット競合者があり、それは競合です。各競合他社は、関連する属性を持つ BizEntity です。各競技者は、さまざまな競技グループのメンバーになることができます。

ユーザーを選択してから、ユーザーグループと関連する競合他社を表示/編集できるように、多対多を機能させようとしています。

モデルで RubyMine の Inspect Code を実行しましたが、クリーンです。それでも、Rails モデルの依存関係図 (両端に ? がある赤い線) は、ユーザーと BizEntity の関係に問題があることを示しています。

どんな援助でも大歓迎です。

ありがとう!

モデルは次のとおりです。

class User < ActiveRecord::Base
  has_secure_password

  attr_accessible :email, :password_digest

  validates_uniqueness_of :email

  has_many :competitive_insightses, :class_name => 'CompetitiveInsights'
  has_many :biz_entitieses, :through => :competitive_insightses, :class_name => 'CompetitiveInsights', :source => :biz_entities

end

class CompetitiveInsights < ActiveRecord::Base
  attr_accessible :biz_entity_id, :user_id, :group_id, :position, :target

  belongs_to :user
  belongs_to :biz_entities

end

class BizEntities < ActiveRecord::Base
  attr_accessible :name, :ticker

  accepts_nested_attributes_for :users

  has_many :competitive_insightses, :class_name => 'CompetitiveInsights'
  has_many :users, :through => :competitive_insightses, :class_name => 'CompetitiveInsights'

end

私のコントローラーでは、コメントされた2行が同じタイプのエラー「nil:NilClassの未定義メソッド「biz_entities」」を引き起こします

class CompetitiveInsightsController < ApplicationController
  def index
    @my_companies = CompetitiveInsights.find_all_by_user_id(current_user)
    #competitive_insights = current_user.competitive_insightses
    #biz_entitieses = current_user.biz_entitieses
    if (@my_companies.nil?)
      @my_companies = CompetitiveInsights.new(current_user)
      @my_companies.save!
    end
  end
end

edit.html.erb はまだ biz_entity フィールドを編集できず、次のエラーがスローされます。

"未定義のメソッド `competitive_insight_competitive_insight_path' for #<#:0x007fc1fae4efd0>"

<%= form_for @my_companies do |f| %>
    <div class="field">
      <%= f.label :group_id %><br />
      <%= f.text_field :group_id %>
    </div>
    <%= f.fields_for :biz_entities do |biz_entity| %>
    <div class="field">
      <%= biz_entity.label :ticker %><br />
      <%= biz_entity.text_field :ticker %>
    </div>
    <% end %>
<div class="actions"><%= f.submit %></div>
<% end %>
4

0 に答える 0