前提・実現したいこと
現在、提案・売上管理をできるアプリを作成しています。
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/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/01/20 15:10
2021/01/21 23:16