質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Ruby on Rails

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

Q&A

解決済

1回答

712閲覧

【rails】cloud9で/gems/activerecord/lib/active_record/persisteの引数が合わない

k_yusuke

総合スコア19

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/08/02 06:26

内容

Twitter型のポートフォリオを作成しています。ユーザーが記事(tourモデル)をストックできるお気に入り機能を実装中(app/model/user.rbで作業中)にrails sしたところ/home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/persistence内の引数が合わないとエラーが出ました。cloud9を使用しているのですがこのパスはどこを指しているのか分かりません。rails db:migrateの際も同様のエラーが出ます。助けてください!

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

rails sした時

=> Booting Puma => Rails 5.2.3 application starting in development => Run `rails server -h` for more startup options Exiting Traceback (most recent call last): 102: from bin/rails:3:in `<main>' 101: from bin/rails:3:in `load' 100: from /home/ec2-user/environment/new_app2/bin/spring:15:in `<top (required)>' 99: from /home/ec2-user/environment/new_app2/bin/spring:15:in `require' 98: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>' 97: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load' 96: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/bin/spring:49:in `<top (required)>' 95: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client.rb:30:in `run' 94: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call' 93: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call' 92: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load' 91: from /home/ec2-user/environment/new_app2/bin/rails:9:in `<top (required)>' 90: from /home/ec2-user/environment/new_app2/bin/rails:9:in `require' #文字数制限のため中略 9: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:14:in `block in loading' 8: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:37:in `block in load_interlock' 7: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:373:in `block in require_or_load' 6: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:475:in `load_file' 5: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:661:in `new_constants_in' 4: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `block in load_file' 3: from /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `load' 2: from /home/ec2-user/environment/new_app2/app/models/user.rb:1:in `<top (required)>' 1: from /home/ec2-user/environment/new_app2/app/models/user.rb:7:in `<class:User>' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/persistence.rb:138:in `destroy': wrong number of arguments (given 0, expected 1) (ArgumentError)

rails db:migrateしたとき

/home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/persistence.rb:138:in `destroy': wrong number of arguments (given 0, expected 1) (ArgumentError) ec2-user:~/environment/new_app2 $ rails db:migrate rails aborted! ArgumentError: wrong number of arguments (given 0, expected 1) /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/persistence.rb:138:in `destroy' /home/ec2-user/environment/new_app2/app/models/user.rb:7:in `<class:User>' /home/ec2-user/environment/new_app2/app/models/user.rb:1:in `<top (required)>' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `load' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:476:in `block in load_file' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:661:in `new_constants_in' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:475:in `load_file' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:373:in `block in require_or_load' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:37:in `block in load_interlock' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:14:in `block in loading' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/concurrency/share_lock.rb:151:in `exclusive' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies/interlock.rb:13:in `loading' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:37:in `load_interlock' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:356:in `require_or_load' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activesupport-5.2.3/lib/active_support/dependencies.rb:510:in `load_missing_constant' #文字数制限のため中略' /home/ec2-user/environment/new_app2/bin/rails:9:in `<top (required)>' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `load' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/rails.rb:28:in `call' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client/command.rb:7:in `call' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/client.rb:30:in `run' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/bin/spring:49:in `<top (required)>' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `load' /home/ec2-user/.rvm/gems/ruby-2.6.3/gems/spring-2.1.0/lib/spring/binstub.rb:11:in `<top (required)>' /home/ec2-user/environment/new_app2/bin/spring:15:in `require' /home/ec2-user/environment/new_app2/bin/spring:15:in `<top (required)>' bin/rails:3:in `load' bin/rails:3:in `<main>' Tasks: TOP => db:migrate => db:load_config => environment (See full trace by running task with --trace)

app/model/user.rb

ruby

1class User < ApplicationRecord 2 3has_many :tours, dependent: :destroy 4has_many :comments, dependent: :destroy 5has_many :likes, dependent: :destroy 6has_many :liked_tours, through: :likes, source: :tour 7has_many :favorites,dependent:destroy 8has_many :favorite_tours,through: :favirote, source: :tour 9 10has_many :relationships 11has_many :followings, through: :relationships, source: :follow 12has_many :reverse_of_relationships, class_name: 'Relationship', foreign_key: 'follow_id' 13has_many :followers, through: :reverse_of_relationships, source: :user 14 15 16devise :database_authenticatable, :registerable, 17 :recoverable, :rememberable, :validatable,:omniauthable 18mount_uploader :userimage, ImagesUploader 19 20 21 def remember_me 22 true 23 end 24 25 def fav(tour) 26 self.favorite.find_or_create_by(tour_id: tour.id) 27 end 28 29 def disfav(tour) 30 un_fav=Favorite.find_by(tour_id: tour.id) 31 un_fav.destroy if un_fav 32 end 33 34 def follow(other_user) 35 unless self == other_user 36 self.relationships.find_or_create_by(follow_id: other_user.id) 37 end 38 end 39 40 def unfollow(other_user) 41 relationship = self.relationships.find_by(follow_id: other_user.id) 42 relationship.destroy if relationship 43 end 44 45 def following?(other_user) 46 self.followings.include?(other_user) 47 end 48 49 def self.find_for_google_oauth2(auth) 50 user = User.where(email: auth.info.email).first 51 unless user 52 user = User.create(name: auth.info.name, 53 provider: auth.provider, 54 uid: auth.uid, 55 email: auth.info.email, 56 token: auth.credentials.token, 57 password: Devise.friendly_token[0, 20]) 58 end 59 user 60 end 61 62 def update_without_current_password(params, *options) 63 params.delete(:current_password) 64 result = update_attributes(params, *options) 65 clean_up_passwords 66 result 67 end 68end 69 70

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

rails 5.2.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

エラーメッセージのエラー行の表示には、たくさんのエラー行が出てきて読みづらいかもしれませんが、だいたいは一番上の方から数行、または一番下の方から数行くらいしか重要ではないことが多いです。

この場合、rails sの方は

1: from /home/ec2-user/environment/new_app2/app/models/user.rb:7:in `<class:User>'

のあたり、rails db:migrateの方は

/home/ec2-user/.rvm/gems/ruby-2.6.3/gems/activerecord-5.2.3/lib/active_record/persistence.rb:138:in `destroy' /home/ec2-user/environment/new_app2/app/models/user.rb:7:in `<class:User>'

このあたりが原因がありそうです。

なお、 /.rvm/gems/ruby-2.6.3/ といった文字列が含まれているパスの行は、まずは無視して大丈夫です。自分で書いたアプリのコードではなく、Rails自体のコードだからです(Rails自体のバグや不整合もあるのですが、それよりはアプリ側のコードが問題になるケースが多いです)。

というわけで、問題はuser.rbの7行目にありそうです。ここを見ると、以下のようになっています。

ruby

1has_many :favorites,dependent:destroy

これはちょっと気づきにくいかもしれませんが、コロンが足りてないですね。dependent:destroyではなくdependent: :destroyと書く必要がありそうです。他の行はそうなってますよね。
こう書かないとdestroyがシンボルにならず、引数のないメソッド呼び出しと解釈されたため、引数の数のエラーが出てたんではないかと思います。

というわけで、まずはここを修正してみてください。

投稿2019/08/16 04:04

takahashim

総合スコア1877

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

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

k_yusuke

2019/08/16 07:25

takahasim様返信ありがとうございます!! 指摘して頂いた通りコロンを足してみたところちゃんと動いてくれました! 解決方法がわからず保留してしまっていたので助かりました。 もっとエラー文を読むべきでした・・・
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問