私はRailsに少し慣れています。以前の小規模なアプリケーションでは、すべての種類の迷惑メールを持つコントローラを混乱させるでしょう。私はここにこのモデルを持っていると私はアルに私はこのfind_mapsを作成したのMaps
それhas_many
を見つけたいなど、Rails find_allモデルのメソッド
をより実効的にモデルを使用しようとしていますし、実際にモデルの機能について学ぶための良い場所を見つけることができません方法。私はそうのような方法で変数でこれを呼び出す使用私のsubaccounts_controller
で
class Subaccount < ApplicationRecord
belongs_to :account
has_many :users
has_many :maps
enum state: { active: 0, inactive: 1 }
def find_maps
Map.where(subaccount_id: self.id).all
end
end
。
class SubaccountsController < ApplicationController
def show
@submaps = Subaccount.find_maps
end
end
これで、そのコントローラの表示ビューにジャンプしてこのコードを使用するとします。
<% @submaps.each do |sm| %>
<%= sm %>
<% end %>
このエラーが発生します。
undefined method `find_maps' for #<Class:0x007fbe95a3b1e0> Did you mean? find_each
私がsub_accountモデルで呼び出す場合、なぜこの未定義のメソッドfind_mapsが得られますか?途中でベストプラクティスを確実に拾いたいと思っています。誰かが私を助けてくれますか?あなたがやった方法で定義されているので
私はあなたが実際にそれがインスタンスメソッドになりたいと思います。 SubaccountクラスにはIDがないので、あなたはnilを取得しています。代わりに、コントローラコードを変更してSubaccountを参照してください。 'Subaccount.find(params [:id])。find_maps' –
はい、申し訳ありません。このように、クラスメソッドがあるので意味をなさないが、その中に 'id'を使用しているので、インスタンスがはっきりしない。私は混乱しているので、ユーザーが何をしたいのか理解しなければならない – Ursus