Ruby on Rails でフリマアプリを実装中です。商品出品機能を実装している最中で
以下エラーが出てしまいました。
<items_controller.rb> class ItemsController < ApplicationController before_action :move_to_signed_in, except: [:index] def index @item = Item.all end def new @item = Item.new end def create @item = Item.new(item_params) @item.save redirect_to root_path end private def move_to_signed_in unless user_signed_in? redirect_to '/users/sign_in' end end def item_params params.require(:item).permit(:name, :image, :introduction,:price,:category_id,:status_id,:charge_id,:prefecture_id,:ship_date_id).merge(user_id: current_user.id) end end
<migrationファイル> class CreateItems < ActiveRecord::Migration[6.0] def change create_table :items do |t| t.references :user ,null: false ,foreign_key: true t.string :image ,null: false t.string :name ,null: false t.text :introduction ,null: false t.integer :price ,null: false t.integer :category_id ,null: false t.integer :status_id ,null: false t.integer :charge_id ,null: false t.integer :prefecture_id ,null: false t.integer :ship_date_id ,null: false t.timestamps end end end
<Itemモデル <Item.rb> class Item < ApplicationRecord extend ActiveHash::Associations::ActiveRecordExtensions belongs_to :category belongs_to :status belongs_to :charge belongs_to :prefecture belongs_to :ship_date has_one_attached :image belongs_to :user has_one :buy_record with_options presence: true do validates :image validates :name validates :introduction validates :price validates :category_id, numericality:{ other_than: 1 } validates :status_id, numericality:{ other_than: 1 } validates :charge_id, numericality:{ other_than: 1 } validates :prefecture_id, numericality:{ other_than: 1 } validates :ship_date_id, numericality:{ other_than: 1 } end end
<Chargeモデル> class Charge < ActiveHash::Base self.data = [ { id: 1, name: '--' }, { id: 2, name: '着払い(購入者負担)' }, { id: 3, name: '送料込み(出品者負担)' }, ] end include ActiveHash::Associations has_many :items
【エラー内容を調べた結果】
current_scopeメソッドが定義されていない、というエラーであるようでしたが、current_scopeメソッドを検索してもそれらしいものはなく、どのように定義するのか教えていただけますでしょうか?
@item.saveの部分を消してみたりしましたが、出品ボタンを押した後、出品情報が保存されないという状態になってしまったので、やはりこのエラーを解決しなければいけないと考えております。
コードは画像では誰も手元で現象を確認できませんので、テキストで、マークダウンのcode機能にてご提示ください。再現するため、なのでモデル定義やマイグレーション(もしくはテーブル定義)も必要です。
あとエラー内容でそのまま検索して出てくる内容で何が足りなかったかも具体的に記載してください。
(どう調べて何を見て何を試してどうなったから、解決しなかったか)
アドバイスありがとうございます。
修正してみました。見かけたらまた宜しくお願いします。
item のsave で Charge のエラーが出ています。
model ItemとChargeのcodeを載せることはできますか?
ありがとうございます。記載しました。
undefined method `has_many' for main:Object
ありがとうございます。次にこのエラーが出たので調べてみます。
回答2件
あなたの回答
tips
プレビュー