🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

Q&A

解決済

1回答

945閲覧

rails:直接アソシエーションのないテーブルの情報を、indexに表示させたい場合

saaaaya

総合スコア1

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

データベース

データベースとは、データの集合体を指します。また、そのデータの集合体の共用を可能にするシステムの意味を含めます

0グッド

0クリップ

投稿2021/01/19 14:50

編集2021/01/19 14:53

前提・実現したいこと

現在、提案・売上管理をできるアプリを作成しています。
userモデル
planモデル(金額や顧客を管理)
performanceモデル(目標金額を管理)
の3つのモデルがあり、planとperformanceには関連がないのでアソシエーションを組んでいませんが
planのindex.html.erbにperformanceのデータを表示させたいです。

発生している問題・エラーメッセージ

下記ER図なのですが、planのindexにperformanceのgoalを表示させたいです。
イメージ説明

該当のソースコード

views/plans/index.html.erb

<h2>売上状況</h2> <%= link_to '目標を入力する', new_performance_path %> <div>目標<%= @goal %>円</div> #ここに数字を入れたいです <div>受注<%= @price_sum %>円</div>

PlansController

def index @plans = Plan.includes(:user).order("created_at DESC") @price = Plan.where(user: current_user.id, sales_status_id: 3) @price_sum = @price.sum(:price) @goal = end def plan_params params.require(:plan).permit(:title, :client, :price, :client_status_id, :sales_status_id, :memo, :knowledge).merge(user_id: current_user.id) end

models/plan.rb

class Plan < ApplicationRecord with_options presence: true do validates :title validates :client validates :price, format: { with: /\A[0-9]+\z/ }, numericality: true validates :client_status_id, numericality: { other_than: 1 } validates :sales_status_id, numericality: { other_than: 1 } end belongs_to :user extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :client_status belongs_to :sales_status end

models/performance.rb

class Performance < ApplicationRecord with_options presence: true do validates :goal, format: { with: /\A[0-9]+\z/ }, numericality: true end belongs_to :user end

models/user.rb

class User < ApplicationRecord # Include default devise modules. Others available are: # :confirmable, :lockable, :timeoutable, :trackable and :omniauthable devise :database_authenticatable, :registerable, :recoverable, :rememberable, :validatable with_options presence: true do # validates :email, uniqueness: { case_sensitive: false } validates :name , format: { with: /\A[ぁ-んァ-ヶ一-龥々]+\z/ } validates :employee_number, format: { with:/\A[0-9]{4}+\z/}, uniqueness: true end PASSWORD_REGEX = /\A(?=.*?[a-z])(?=.*?\d)[a-z\d]+\z/i.freeze validates_format_of :password, with: PASSWORD_REGEX, length: { minimum: 6 } has_many :plans has_one :performance end

試したこと

PlansControllerに@goalというインスタンスを作成し、plan→user→performanceという形で値を引っ張ってこようと色々しましたが、うまくいかず、userにperformance_idがないためできないのでは?となりました。

もっと他にいい方法がある、そもそも考え方・設計がおかしいなどあれば教えていただきたいです。

補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

これは無理です。
人間語で説明してみてください
ある Plan の Performance はどう計算するのですか?
それができれば可能性はありますが、このERからみると人間語での説明はできそうにみえないのです。
UserがPerformanceをhas_many ということは、何か他の要素毎にPerformanceを決めるということかと思います。それが Plan なのでは?
User 1:多 Plan 1:1 Performance なのでは?

投稿2021/01/19 22:18

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

saaaaya

2021/01/20 15:10

回答ありがとうございます。 1:1で組んでみましたが、また別のところでエラーとなるので、Userのマイページで表示をさせる仕様に変更しようと思います。 頑張ります
winterboum

2021/01/21 23:16

Performanceてどういうものなのか、がわかれば違った助言が出来るかも
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問